【发布时间】:2020-06-07 09:50:39
【问题描述】:
我有一个运行并发 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.Reader 以避免丢弃从客户端读取的数据。
-
请显示所有客户端代码。可能的问题是客户端关闭连接器或退出,但在链接文件中均不可见。
标签: go networking tcp server