首页 新闻 会员 周边

C#中如何实现TCP长连接

0
悬赏园豆:5 [已解决问题] 解决于 2017-12-20 09:29

请问大家TCP长连接和短连接如何使用C#代码实现

C#
HDWK的主页 HDWK | 初学一级 | 园豆:152
提问于:2017-12-19 16:06
< >
分享
最佳答案
0

参考 EnyimMemcachedCore 的 PooledSocket.cs 实现

收获园豆:5
dudu | 高人七级 |园豆:31003 | 2017-12-19 18:09
其他回答(2)
0

连接之后发送,接收关闭。就是短连接。

连接之后,发送接收,不关闭,就是长连接。

Supper_litt | 园豆:827 (小虾三级) | 2017-12-19 16:22

我看见有一些博客说,好像要设置keepAlive的值,但是在C#中没找到,这是怎么回事?

支持(0) 反对(0) HDWK | 园豆:152 (初学一级) | 2017-12-19 16:24

比如这篇文章:https://www.2cto.com/net/201303/195287.html

支持(0) 反对(0) HDWK | 园豆:152 (初学一级) | 2017-12-19 16:24
0

socket中有个keepalive的option,但这个没啥鸟用,系统上的keepalive包发送间隔太长不符合实际使用场景(当然你可以通过直接改注册表缩小这个值),一般正常做法是建立连接后隔一段时间发心跳包过去。

Daniel Cai | 园豆:10424 (专家六级) | 2017-12-19 17:31

原来是这样啊。如果是手写发送包,服务器那边还要接收一下,那么如果客户端发送过去了,服务端不进行接收,直接在客户端这边try catch 看是否有异常来判断是否还保持连接,如果抛异常了,那么就断开连接了,否则就没断开连接。这样可不可以?

支持(0) 反对(0) HDWK | 园豆:152 (初学一级) | 2017-12-19 17:39

@HDWK: 一般不会这样,因为网络波动谁也说不好,这里一般会在尝试失败后再尝试几次如果还是没响应才shutdown

支持(0) 反对(0) Daniel Cai | 园豆:10424 (专家六级) | 2017-12-19 17:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册