Mam aplikacji klient-serwer, używając połączenia TCPNie można wysyłać dane porcji przez TCP w Go Programowanie
Klient:
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)
}
Serwer:
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)
}
Wynik na służyć ma {0, 0}, ponieważ nie wiem, jak uzyskać zmienną bytes.Buffer
z net.Conn
.
Czy istnieje sposób przesyłania zmiennych GOB przez TCP?
Jeśli to prawda, w jaki sposób można to zrobić? Czy jest jakaś alternatywa w wysyłaniu liczb przez TCP?
Każda pomoc lub kod przykładowy byłby naprawdę doceniany.
Twój przykład działa świetnie. Dzięki. Mam tylko pytanie, w jaki sposób mogę wysłać wynik z serwera do klienta? – Emanuel
Gniazdo jest dwukierunkowe. Wystarczy napisać na nim w funkcji 'handleConnection', dokładnie tak, jak piszesz w kliencie. –
Działa to świetnie. Dzięki za przykład. Chcę wysłać ciąg {map [string]} do serwera. Ale nie zostanie zdekodowany na końcu serwera. Wszelkie sugestie na ten temat? – Dany