确定端口是否正在使用?

时间:2009-03-24 22:21:22

标签: c# wcf

有没有办法,使用C#来确定端口是否可用?我想在使用已经使用的端口启动WCF ServiceHost实例之前检查: - )

2 个答案:

答案 0 :(得分:6)

您无法确定端口是否可用。你只能确定

  1. 您可以控制端口
  2. 过去某个时候有一个端口
  3. 除非您通过在端口上绑定和侦听特定套接字来控制端口,否则可能会出现另一个进程并控制该端口。

    了解端口是否可用的唯一可靠方法是尝试侦听它。如果您成功,那么该端口可用并且您可以控制。否则,您知道在过去的某个时刻,可能是现在,该端口由另一个实体控制。

答案 1 :(得分:1)

关于In C#, how to check if a TCP port is available?,我认为原始海报并不确定他是在谈论客户端还是服务器,所以答案也是关于客户端想要连接或服务器想要监听端口。< / p>

JaredPar的答案是正确的(超过这个!)虽然有时可能不方便。

如果您有理由确定没有其他服务器正在抓取您刚检查的端口(或者不关心偶然的故障),您可以尝试(从http://www.codeproject.com/Tips/268108/Find-the-open-port-on-a-machine-using-Csharp?msg=4176410#xx4176410xx开始,类似于https://stackoverflow.com/a/570461/586754):

{{1}}