在网上查了,可以通过判断err是否为io.EOF来判断用户是否与服务端断开连接,但这行代码始终没有执行
(客户端是直接通过Ctrl + C结束的)
有疑问加站长微信联系(非本文作者)

在网上查了,可以通过判断err是否为io.EOF来判断用户是否与服务端断开连接,但这行代码始终没有执行
(客户端是直接通过Ctrl + C结束的)
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
`单行代码`
这个代码绝了,defer放在最后,这公司怕是要倒闭
先不说
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.
tcp的错误基本上都是不可恢复的,都可以判定断开,判断错误的类型其实意义不大,让客户端从新链接更加便捷
@liangmanlin 好的,谢谢
https://zhuanlan.zhihu.com/p/445205415
net 库里面其他的实现同理