在.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; }