在网上查了,可以通过判断err是否为io.EOF来判断用户是否与服务端断开连接,但这行代码始终没有执行
(客户端是直接通过Ctrl + C结束的)
TCP的conn.Read方法中的err来判断一次读取是否成功,但无法读到io.EOF来判断用户已经断开连接。
13268609770 · 2021-12-14 22:41:30 · 1547 次点击更多评论
先不说defer
的问题
- 怕不是
c.clientJsonProcess()
这个方法阻塞了吧 - 看看
conn.Read()
的实现是怎么写的,或许把io.EOF
转换成了其它错误
@liangmanlin @zzustu 感谢大佬的回复,我是一个初学者,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.