如何在Go中不创建临时字节切片的情况下读取连接



发送到我的net.Conn的数据是使用TCP网络的数据包。这些包大小不一。我该如何制作一个与输入数据大小完全相同的缓冲区?目前,我正在分配一个字节切片,它具有最大的数据包,然后再次对其进行切片。

for{
data := make([]byte, 2097151)
r, _ := (*c).Read(data)
data = data[:r]
}

您可以使用bufio从客户端读取

的基本示例

func TCPServerReadFromConnection() {
server, err := net.Listen("tcp", ":8080")
if err != nil {
panic(err)
}
defer server.Close()
conn, err := server.Accept()
if err != nil {
panic(err)
}
defer conn.Close()
// This is a scanner for accepting the data coming over connection
scanner := bufio.NewScanner(conn)
for scanner.Scan() {
val := scanner.Text()
fmt.Println(val)
}
}

最新更新