我有一个监听器,它在分配的端口号上监听 localhost,如下所示:
TcpListener listener = new TcpListener(localIP);
listener.Start();
while (true) {
listen:
if (!listener.Pending()) {
Thread.Sleep(100);
goto listen;
}
Socket socket = listener.AcceptSocket();
}
现在同一个程序应该像这样连接到该程序的其他实例:
TcpClient client = new TcpClient(localIP); //localendpoint should use same port
client.Connect("localhost", remotePort);
如您所见,我IPEndPoint localIP
为listener和client绑定了相同的内容。因此,每当程序的另一个实例与这个程序有连接时,侦听器中的套接字就可以给我它的RemoteEndPoint
. 这样我就不会得到系统生成的随机端口号。当然这不起作用,我得到这个错误:
每个套接字地址(协议/网络地址/端口)通常只允许使用一次
由于侦听器和客户端都绑定到同一个IPEndPoint localIP
.
是否有解决方法,以便我可以将侦听器和客户端绑定到同一个端点?因为我想从socket.RemoteEndPoint
监听器中获取端口号。此端口号应该是分配给程序的每个单独实例的端口号。