golang 发送和接收对象
golang send and receive objects
我可以使用以下代码在 golang 中发送和接收字符串:
//send side
message.Buf.WriteTo(conn)
//receive side
message, err := bufio.NewReader(conn).ReadString('\n')
if err != nil {
panic(err)
}
fmt.Print("Message from client: ", string(message))
但是,我想发送整个消息对象并在接收端接收它
类似于:
//send side
message.WriteTo(conn)
//receive side
message,err :=bufio.NewReader(conn).ReadMessageObject()
我是 Golang 的新手,任何指点都非常有帮助。
您首先要声明消息的类型。类似于:
type Message struct {
From string
To string
Text string
CreatedAt time.Time
}
然后你需要决定你希望如何从字节编码你的新类型to/decoded,因为你可以通过线路发送的都是字节。
例如,您可以将消息发送为 json, as xml, or as gob 等。您选择哪个取决于您的要求,json
无处不在且可读,但另一方面 gob
更快,至少我是这么听说的,我自己还没有真正使用过 gob
。
例如,如果您选择 json
。
// receive
var m Message
if _, err := json.NewDecoder(conn).Decode(&m); err != nil {
panic(err)
}
// send
if err := json.NewEncoder(conn).Encode(m); err != nil {
panic(err)
}
我可以使用以下代码在 golang 中发送和接收字符串:
//send side
message.Buf.WriteTo(conn)
//receive side
message, err := bufio.NewReader(conn).ReadString('\n')
if err != nil {
panic(err)
}
fmt.Print("Message from client: ", string(message))
但是,我想发送整个消息对象并在接收端接收它
类似于:
//send side
message.WriteTo(conn)
//receive side
message,err :=bufio.NewReader(conn).ReadMessageObject()
我是 Golang 的新手,任何指点都非常有帮助。
您首先要声明消息的类型。类似于:
type Message struct {
From string
To string
Text string
CreatedAt time.Time
}
然后你需要决定你希望如何从字节编码你的新类型to/decoded,因为你可以通过线路发送的都是字节。
例如,您可以将消息发送为 json, as xml, or as gob 等。您选择哪个取决于您的要求,json
无处不在且可读,但另一方面 gob
更快,至少我是这么听说的,我自己还没有真正使用过 gob
。
例如,如果您选择 json
。
// receive
var m Message
if _, err := json.NewDecoder(conn).Decode(&m); err != nil {
panic(err)
}
// send
if err := json.NewEncoder(conn).Encode(m); err != nil {
panic(err)
}