Senden nicht möglich gob-Daten über TCP in Go-Programmierung
Ich habe eine client-server-Anwendung mit TCP-Verbindung
Client:
type Q struct {
sum int64
}
type P struct {
M, N int64
}
func main() {
...
//read M and N
...
tcpAddr, err := net.ResolveTCPAddr("tcp4", service)
...
var p P
p.M = M
p.N = N
err = enc.Encode(p)
}
Server:
type Q struct {
sum int64
}
type P struct {
M, N int64
}
func main() {
...
tcpAddr, err := net.ResolveTCPAddr("ip4", service)
listener, err := net.ListenTCP("tcp", tcpAddr)
...
var connB bytes.Buffer
dec := gob.NewDecoder(&connB)
var p P
err = dec.Decode(p)
fmt.Printf("{%d, %d}\n", p.M, p.N)
}
Das Ergebnis auf dienen ist {0, 0}, weil ich nicht weiß, wie Sie erhalten eine bytes.Buffer
variable aus net.Conn
.
Gibt es eine Möglichkeit für das senden von gob Variablen über TCP ?
Wenn das stimmt, wie kann dies gemacht werden ? Oder gibt es irgendwelche alternativen in senden zahlen über TCP ?
Jede Hilfe oder Beispiel-code würde wirklich geschätzt werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist ein komplettes Beispiel.
Server:
Client :
Starten Sie den server, dann den client, und Sie sehen, der server die Anzeige der empfangenen P-Wert.
Wenigen Beobachtungen deutlich zu machen :
Conn
implementiert dieReader
undWriter
Schnittstellen, die macht es einfach zu bedienen : Sie können es zu einemDecoder
oderEncoder
P
struct-definition in einem Paket importiert von beiden ProgrammenhandleConnection
Funktion, genau so, wie Sie schreiben, in der client.