小编use*_*335的帖子

父进程死亡后由子进程保留的TCP端口(.net 3.5)

我在.net 3.5中实现了一个小的WCF服务,客户端通过端口4321上的TCP连接.该服务可以产生其他进程(通过System.Diagnostics.Process).当然,当服务被杀或崩溃或其他什么时,产生的进程仍然存在.我遇到的问题是如果我尝试在这些进程仍在运行时重新启动服务,我会收到以下异常:

CommunicationException:IP端点0.0.0.0:4321上已有一个侦听器.确保您没有尝试在应用程序中多次使用此端点,并且没有其他应用程序在此端点上进行侦听.

实际上,当我运行netstat时,我可以看到有一个进程侦听端口TCP 4321:

TCP 0.0.0.0:4321 MTL-WKS-AG196:0 LISTENING 97308

你在这里看到的进程ID(97308)是我第一次启动的服务之一(它不再存在,因为它被杀死了).释放端口的唯一方法是终止在服务生命周期中生成的所有进程.

我对端口和进程了解不多,但我的理解是子进程"继承"父进程监听的端口.它或多或少会发生什么?

有没有办法取消这种行为?无法访问衍生进程的代码?

另外,我真的不认为这是可能的,但有没有办法告诉Windows在父进程被杀死时杀死子进程?

谢谢 !

.net wcf tcp process

6
推荐指数
1
解决办法
1160
查看次数

标签 统计

.net ×1

process ×1

tcp ×1

wcf ×1