我的Socket服务端程序,退出后,端口还在.
再打开那程序,就提示端口被占用了。
用netstat -ano看了。 pid 5908taskkill /pid 5908 /f
提示找不到这个进程。我打开任务管理器,也看不到这个pid进程。

解决方案 »

  1.   

    即使是线程,也分前台线程和后台线程。对于前台线程,即使你Main()所在线程结束,它也可能继续在执行,直到结束。估计你还有前台线程没结束掉。
      

  2.   

    socket 所占的资源没有释放,在关闭程序记得调用socket.close清理资源
      

  3.   

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

    这个事儿与进程在不再没有关系,端口是系统维护的。
    等待的这段时间是对可靠传输有利的具体请看http://blog.csdn.net/icedmilk/article/details/5337591
      

  4.   

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

  5.   

    这个程序,开了两个线程,一个是Tcp的,一个是Udp的
    TCP我DisConnect,Udp我把线程abort了。
    不管是什么原因造成端口还在占用,我想,把这个PID结束掉。
      

  6.   

    五天了,端口还在用着,PID找不到,服务器又不能老是重启。唉
      

  7.   

    下,最近也在搞Socket编程,嘿嘿