//socket通信服务端代码
![2019-02-18 17-47-12屏幕截图.png](https://static.studygolang.com/190218/d8794fa8e1813ff075ac3a4b7b866daf.png)
![2019-02-18 17-47-28屏幕截图.png](https://static.studygolang.com/190218/0ff75ed059dafa0ca16362493d7d9395.png)
//socket通信客户端代码
![2019-02-18 17-47-41屏幕截图.png](https://static.studygolang.com/190218/0350a2f8f001b1bbe05b1bb10b9a76ab.png)
问题:客户端连接服务端后发送消息,随后睡眠5s,在这期间,服务端没有输出客户端发送的内容,直到客户端关闭,服务端才会输出客户端的内容。
请问这是什么原因?
io.Copy会循环从conn里读取消息,写入到buffer, 直到EOF或者出错。
在正常网络条件下不会出错, 那就只有等到EOF了,客户端写入“Hello world” 后不会造成 服务端EOF,只有客户端time.Sleep完毕后,执行defer conn.Close() 才会造成服务器io.Copy遇到EOF, 然后输出buffer.String()
#1