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

13268609770 · 2021-12-14 22:41:30 · 1547 次点击

这个代码绝了,defer放在最后,这公司怕是要倒闭

#1
更多评论

先不说defer的问题

  1. 怕不是c.clientJsonProcess()这个方法阻塞了吧
  2. 看看 conn.Read() 的实现是怎么写的,或许把 io.EOF 转换成了其它错误
#2

@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.

#3