gpt4 book ai didi

go - 连接后Go TCP服务器始终抛出EOF

转载 作者:行者123 更新时间:2023-12-01 22:37:58 26 4
gpt4 key购买 nike

我有一个运行并发TCP 4服务器的Go例程,但是每次我通过Dial连接到它时,TCP服务器都会抛出一个错误,仅显示“EOF”。有趣的是,它正在处理数据的第一行,但随后连接句柄引发错误。

tcp服务器实例:


if err != nil {
fmt.Println("an error occured: ")
fmt.Println(err)
return
}


defer l.Close()

for {
conn, err_handle := l.Accept()
if err_handle != nil {
fmt.Println("node err: ",err_handle)
return
}
go handle_Connection(conn, topics)
}

handle_Connection:
func handle_Connection(conn net.Conn, topics map[string][]string) {
defer conn.Close()
fmt.Println("client connected")

for {
data, err_handle := bufio.NewReader(conn).ReadString('\n')
if err_handle != nil {
fmt.Println("Err: ", err_handle)
return
}

客户:
  conn, err := net.Dial("tcp4", ":"+strconv.Itoa(port))

if err != nil {
fmt.Println("an error occured: ")
fmt.Println(err)
}

最佳答案

解决此问题的方法非常简单,那就是在处理数据的循环中声明服务器bufio数据读取器。

func handle_Connection(conn net.Conn, topics map[string][]string) {
defer conn.Close()
fmt.Println("client connected")

for {
data, err_handle := bufio.NewReader(conn).ReadString('\n')
if err_handle != nil {
fmt.Println("Err: ", err_handle)
return
}

应该:
func handle_Connection(conn net.Conn, topics map[string][]string) {
defer conn.Close()
fmt.Println("client connected")

data, err_handle := bufio.NewReader(conn).ReadString('\n')
for {
if err_handle != nil {
fmt.Println("Err: ", err_handle)
return
}

关于go - 连接后Go TCP服务器始终抛出EOF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60364516/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com