object - golang 发送和接收对象

标签 object go send

我可以使用以下代码在 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
}

然后您需要决定如何将新类型编码为字节或从字节解码,因为您可以通过线路发送的只是字节。 例如,您可以将消息发送为 json ,如xml ,或如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)
}

关于object - golang 发送和接收对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43710406/

相关文章:

javascript - 如何定义一个构造函数来生成具有 getter 和 setter 的对象?

java - 尝试创建汽车对象数组,结果为 null

postgresql - Go database/sql - 重新连接时发出命令

C 套接字 - 接收 : connection reset by peer

sockets - 使用send()时是否有 'optimal'缓冲区大小?

C Socket 客户端打印出奇怪的输出

java - 无法从 main 外部引用在 main 中创建的对象

javascript - 无法在函数中调用窗口位置对象

jquery - Gorilla Mux Google Cloud 端点 CORS 问题

time - 解析不是 'standard' 格式的日期/时间字符串