Невозможно отправить данные gob по TCP в Go Programming

У меня есть клиент-серверное приложение, использующее TCP-соединение

Клиент:

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)
}

Сервер:

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)
}

Результатом serve является {0, 0}, потому что я не знаю, как получить переменную bytes.Bufferиз net.Conn.

Есть ли способ отправки переменных gob через TCP?

Если правда, то как это можно сделать? Или есть альтернатива в отправке номеров по TCP?

Любая помощь или пример кода будут действительно оценены.

19
задан Emanuel 3 August 2016 в 12:51
поделиться