【发布时间】:2016-03-03 12:10:38
【问题描述】:
我正在 GO 中创建一个 TCP 服务器端,它接收 TCP 数据包并相应地发送响应。我能够监听连接,但是当客户端向服务器发送 TCP 数据包时,服务器仅在连接重置(TCP RST)时接收它们。
这意味着当客户端发送一个数据包时,服务器等待下一个数据包对第一个数据包做一些事情。这是影响这部分问题的代码:
listener, err := net.Listen("tcp", ":25565")
if err != nil {
fmt.Println(err)
}
for {
conn, err := listener.Accept()
if err != nil {
fmt.Println(err)
}
message, _ := ioutil.ReadAll(conn) // Get the bytes from the TCP packet
fmt.Println("Received connection " + conn.RemoteAddr().String())
HandlePacket(conn, message) // Do stuff with the data
conn.Close() // End the connection
}
HandlePacket(...) 解析数据包中接收到的字节。问题是,当客户端发送第一个数据包时它什么也没收到,然后在发送第二个数据包时打印第一个数据包的数据。
【问题讨论】:
标签: go