TCP的conn.Read方法中的err来判断一次读取是否成功,但无法读到io.EOF来判断用户已经断开连接。

13268609770 · · 1240 次点击
这个代码绝了,defer放在最后,这公司怕是要倒闭
#1
更多评论
先不说`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-&gt;127.0.0.1:53026: wsarecv: An existing connection was forcibly closed by the remote host.
#3