![image.png](https://static.studygolang.com/211214/c119c0ab9d53dee0fa1cc0f58914429b.png)
在网上查了,可以通过判断err是否为io.EOF来判断用户是否与服务端断开连接,但这行代码始终没有执行
(客户端是直接通过Ctrl + C结束的)
先不说`defer`的问题
1. 怕不是`c.clientJsonProcess()`这个方法阻塞了吧
2. 看看 `conn.Read()` 的实现是怎么写的,或许把 `io.EOF` 转换成了其它错误
#2
更多评论
<a href="/user/liangmanlin" title="@liangmanlin">@liangmanlin</a>
<a href="/user/zzustu" title="@zzustu">@zzustu</a>
感谢大佬的回复,我是一个初学者,defer这个东西只是看了视频这样用没研究原理,哈哈。这个项目是个练习。
1、c.clientJsonProcess()方法是没有阻塞的,正常判断Read返回的err不为空可以得知接收客户端的消息失败了。但是判断EOF就不行了
2、conn.Read()不知道怎么实现的,目前还看不懂这些,但是Read的err如果不为空,那么返回的内容是:read tcp 127.0.0.1:8888->127.0.0.1:53026: wsarecv: An existing connection was forcibly closed by the remote host.
#3