初级会员
  • 第 41745 位会员
  • cyxr001
  • 2019-08-16 15:34:14
  • Offline
  • 19 74

最近发布的文章

    暂无

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • 1.我刚才试了一下,好像还是得两边都关闭才行,我客户端生成连接池后,然后服务端重启,按理说原来的连接不能发东西了,但是我客户端用原来的连接write,不会返回error,但是服务端那边也不会返回值。就是说,服务端应该是处于close_wait的阶段,我不能靠write来判断这个连接可不可用,连着read一起判断才行。。。所以还是需要心跳检测? 2.服务端怎么管理连接对象? 客户端请求过来,我怎么快速取出对应的连接对象呢?
  • #3 @mlzhou 有点明白了。 1. 服务端没有封装net.Conn对象,客户端close的话,就算服务端不调用close,也会被gc处理掉,但是不知道这个gc会在多久回收服务端无用的net.Conn。 如果服务端封装net.Conn对象,将他储存了,那是不是应该由服务端定时发送请求,检测客户端对应conn是否关闭了,然后清理掉? 2.心跳包就是用来检测对面是不是还保留了连接,每一个连接都发送心跳。你的意思是不需要发送心跳,结合1,3说的,超时就关闭客户端,不需要管服务端掉不掉close,换一条连接就行的意思么?
  • #1 @mlzhou 谢谢你的回答,我可能没说清楚。我再描述下问题。主要是不太清楚需不需要发送心跳包,以及哪边发送 1.golang的tcp编程里面,对于每一个conn,两边都有close方法,我是不是需要两边都调用close方法,才能正常挥手? 如果我只调用了client的close,服务端的这个conn是否正常关闭了,还是说长期保有占用资源? 2.心跳是在两边都不关闭的时候的发送,但是如果我服务端发送的话,客户端的conn都在channel里面,无法处理收到消息吧? 我应该定时遍历channel去处理心跳包吗?还是说不需要发心跳包? 3.还有一个方法,client 从channel获取conn的时候就发送心跳包检测,有反应才返回,无反应的话就重新建立个连接返回?这样好像代价比较大 求大佬看看。。。
  • 评论了主题 Mac golang 打包问题
    请问下楼主最后怎么解决的?
  • 大神 你这个是简化处理了接受把?如果不清楚接受长度 用for循环去接受,判断n == 0来跳出循环,好像会阻塞在接受那里。这个怎么处理?