tcp的wait_time和close_time占用大量端口

jiaoshiyao 2016-12-24 02:10:41
服务器端方法
if(接收到的数据长度 == 0)
{
socket.Shutdown(SocketShutdown.Both);
socket.Close();
socket.Dispose();
}


客户端方法

if(接收到的数据长度 == 0)
{
socket.Shutdown(SocketShutdown.Both);
socket.Close();
socket.Dispose();
}

这样客户端和服务器同时Shutdown会不会出问题啊
我压力测试,发现系统有大量的wait_time和close_time,还有少数的FIN_XXX_TIME 中间的记不清了
这些端口在我关闭了程序还在占用端口
这些东西我该如何处理
...全文
647 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiaoshiyao 2017-01-05
  • 打赏
  • 举报
回复
引用 6 楼 Hello_Ge 的回复:
[quote=引用 4 楼 War3LostTemple 的回复:] 这个问题处理过,费了不少周折,不轻易外传
继续装逼吧[/quote] 研究出来了 wait_time是主动关闭方的socket完全关闭后的正常状态 close_time是接受到0数据包后,没有显示调用本地socket的close方法的状态,这是异常状态
dai78 2017-01-04
  • 打赏
  • 举报
回复
if(接收到的数据长度 == 0)
{
socket.Shutdown(SocketShutdown.Both);
socket.Close();
socket.Dispose();
}
为什么要加判断,直接关就可以了。你那是一直读还是事件触发了才执行
by_封爱 版主 2017-01-04
  • 打赏
  • 举报
回复
在C#里提到GC的 我才认为 那是真正的装B,.. 因为这么高级的语言 什么回收都是全自动的 我没看到几个开源的东西里面有GC的代码...
crystal_lz 2017-01-04
  • 打赏
  • 举报
回复
你以为 调用close连接就立即被关闭了?
你调用close之后 只是告知系统 当前socket我已经不需要了 当系统得到这个close之后 他就自己去处理四次挥手 而不是他处理完了四次挥手才让close返回 你的close只是负责发送了一个通知而已
如果有大量的数据包存在 四次挥手的数据包(FIN+ACK)(ACK)(FIN+ACK)(ACK)如果途中造成丢包 那么就造成了等待

而一个断开连接过程可以看作是:

A->B(FIN+ACK) :还有什么要说的吗 我要挂电话了
B->A(ACK) :没什么了
B->A(FIN+ACK) :那挂电话咯
B->A(ACK) :好的

这篇文章中我有提到TCP建立连接与断开连接的过程
War3LostTemple 2017-01-03
  • 打赏
  • 举报
回复
研究一下Socket的内部原理吧,有可能解决
War3LostTemple 2017-01-03
  • 打赏
  • 举报
回复
引用 6 楼 Hello_Ge 的回复:
[quote=引用 4 楼 War3LostTemple 的回复:] 这个问题处理过,费了不少周折,不轻易外传
继续装逼吧[/quote] 有本事你也装啊
  • 打赏
  • 举报
回复
引用 4 楼 War3LostTemple 的回复:
这个问题处理过,费了不少周折,不轻易外传
继续装逼吧
  • 打赏
  • 举报
回复
引用 3 楼 shingoscar 的回复:
试试GC.Collect吧
非万不得已还是不要用GC吧
War3LostTemple 2017-01-03
  • 打赏
  • 举报
回复
这个问题处理过,费了不少周折,不轻易外传
Poopaye 2016-12-28
  • 打赏
  • 举报
回复
试试GC.Collect吧
jiaoshiyao 2016-12-28
  • 打赏
  • 举报
回复
来人帮忙啊
jiaoshiyao 2016-12-24
  • 打赏
  • 举报
回复
客户端shutdown之后 服务器接收到了一个长度为0的数据 已经停止接受数据了,并且服务器的socket开始shutdown和close 为啥系统的状态还有wait_time 网上查了查wait_time是客户端发送关闭命令的状态 可是这个状态我已经处理了 不懂.

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧