程序已退出,端口被占用,奇怪。

cglandy 2011-09-08 05:23:33
我的Socket服务端程序,退出后,端口还在.
再打开那程序,就提示端口被占用了。
用netstat -ano看了。 pid 5908

taskkill /pid 5908 /f
提示找不到这个进程。我打开任务管理器,也看不到这个pid进程。

...全文
354 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Zhen (Evan) Wang 2011-09-13
  • 打赏
  • 举报
回复
mark下,最近也在搞Socket编程,嘿嘿
Anyhasgone 2011-09-13
  • 打赏
  • 举报
回复
c#不是托管语言吗 怎么还用程序员自己释放资源?
cglandy 2011-09-13
  • 打赏
  • 举报
回复
五天了,端口还在用着,PID找不到,服务器又不能老是重启。唉
cglandy 2011-09-09
  • 打赏
  • 举报
回复
求解。
cglandy 2011-09-09
  • 打赏
  • 举报
回复
这个程序,开了两个线程,一个是Tcp的,一个是Udp的
TCP我DisConnect,Udp我把线程abort了。
不管是什么原因造成端口还在占用,我想,把这个PID结束掉。
[Quote=引用 10 楼 sp1234 的回复:]
谁知道你怎样编程的呢?

如果你确保有dispose和析构函数,可以正常close,那么即使服务临时垮掉,1~2秒钟重新启动,也是可以重新监听的!
[/Quote]
  • 打赏
  • 举报
回复
谁知道你怎样编程的呢?

如果你确保有dispose和析构函数,可以正常close,那么即使服务临时垮掉,1~2秒钟重新启动,也是可以重新监听的!
cglandy 2011-09-08
  • 打赏
  • 举报
回复
在线等呢。各位。
cglandy 2011-09-08
  • 打赏
  • 举报
回复
很久很久了,从多提问到现在,那个端口还在用着。[Quote=引用 5 楼 icedmilk 的回复:]
进程没了,线程怎么可能在。

原因在于
在TCP连接断开时,主动断开的一方在发送最后一个ACK后,就进入了TIME_WAIT状态,这个状态一般持续2MSL的时间。(MSL是max segment lifetime的缩写,2MSL一般为2分钟)

这个事儿与进程在不再没有关系,端口是系统维护的。
等待的这段时间是对可靠传输有利的

具体请看http://blog.csdn.net/i……
[/Quote]
beckfun 2011-09-08
  • 打赏
  • 举报
回复
5楼强大...下班前顶个先...
Icedmilk 2011-09-08
  • 打赏
  • 举报
回复
进程没了,线程怎么可能在。

原因在于
在TCP连接断开时,主动断开的一方在发送最后一个ACK后,就进入了TIME_WAIT状态,这个状态一般持续2MSL的时间。(MSL是max segment lifetime的缩写,2MSL一般为2分钟)

这个事儿与进程在不再没有关系,端口是系统维护的。
等待的这段时间是对可靠传输有利的

具体请看http://blog.csdn.net/icedmilk/article/details/5337591
likytkyt 2011-09-08
  • 打赏
  • 举报
回复
socket 所占的资源没有释放,在关闭程序记得调用socket.close清理资源
成成 2011-09-08
  • 打赏
  • 举报
回复
关了线程也会有一段时间存在占用的吧
老毕 2011-09-08
  • 打赏
  • 举报
回复
即使是线程,也分前台线程和后台线程。对于前台线程,即使你Main()所在线程结束,它也可能继续在执行,直到结束。

估计你还有前台线程没结束掉。
isjoe 2011-09-08
  • 打赏
  • 举报
回复
线程没有退出

110,535

社区成员

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

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

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