当前位置:编程学习 > C#/ASP.NET >>

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

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

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

--------------------编程问答-------------------- 线程没有退出 --------------------编程问答-------------------- 即使是线程,也分前台线程和后台线程。对于前台线程,即使你Main()所在线程结束,它也可能继续在执行,直到结束。

估计你还有前台线程没结束掉。 --------------------编程问答-------------------- 关了线程也会有一段时间存在占用的吧
--------------------编程问答-------------------- socket 所占的资源没有释放,在关闭程序记得调用socket.close清理资源 --------------------编程问答-------------------- 进程没了,线程怎么可能在。

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

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

具体请看http://blog.csdn.net/icedmilk/article/details/5337591 --------------------编程问答-------------------- --------------------编程问答-------------------- 5楼强大...下班前顶个先... --------------------编程问答-------------------- 很久很久了,从多提问到现在,那个端口还在用着。
引用 5 楼 icedmilk 的回复:
进程没了,线程怎么可能在。

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

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

具体请看http://blog.csdn.net/i……
--------------------编程问答-------------------- 在线等呢。各位。 --------------------编程问答-------------------- 谁知道你怎样编程的呢?

如果你确保有dispose和析构函数,可以正常close,那么即使服务临时垮掉,1~2秒钟重新启动,也是可以重新监听的! --------------------编程问答-------------------- 这个程序,开了两个线程,一个是Tcp的,一个是Udp的
TCP我DisConnect,Udp我把线程abort了。
不管是什么原因造成端口还在占用,我想,把这个PID结束掉。
引用 10 楼 sp1234 的回复:
谁知道你怎样编程的呢?

如果你确保有dispose和析构函数,可以正常close,那么即使服务临时垮掉,1~2秒钟重新启动,也是可以重新监听的!
--------------------编程问答-------------------- 求解。 --------------------编程问答-------------------- 五天了,端口还在用着,PID找不到,服务器又不能老是重启。唉 --------------------编程问答-------------------- c#不是托管语言吗 怎么还用程序员自己释放资源? --------------------编程问答-------------------- mark下,最近也在搞Socket编程,嘿嘿
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,