在.Net中找到下一个TCP端口

时间:2020-03-06 14:46:06  来源:igfitidea点击:

我想为WCF服务调用创建一个新的net.tcp:// localhost:x / Service终结点,并动态分配新的开放tcp端口。

我知道当我打开到给定服务器的连接时,TcpClient将分配一个新的客户端端口。

是否有一种简单的方法来查找.Net中的下一个打开的TCP端口?

我需要实际的数字,以便可以在上面构建字符串,而0则不起作用,因为我需要将该字符串传递给另一个进程,以便可以在该新通道上进行回调。

解决方案

使用端口号0。TCP堆栈将分配下一个空闲端口。

首先打开端口,然后将正确的端口号提供给其他进程。

否则,仍然有可能通过其他一些过程首先打开端口,而我们仍然有一个不同的端口。

这是我一直在寻找的东西:

static int FreeTcpPort()
{
  TcpListener l = new TcpListener(IPAddress.Loopback, 0);
  l.Start();
  int port = ((IPEndPoint)l.LocalEndpoint).Port;
  l.Stop();
  return port;
}