请考虑以下代码:
void Connect(IPAddress address, int port)
{
TcpListener listener = new TcpListener(address, port);
listener.Start();
TcpClient client= new TcpClient();
//The following line would actually block the caller, but ignore this fact ATM.
var conn= listener.AcceptTcpClient();
client.Connect(address,port);
var address = ((IPEndPoint)conn.Client.RemoteEndPoint).Address;
var port = ((IPEndPoint)conn.Client.RemoteEndPoint).Port;
}
客户端指定的端口号与我能够从连接中获取的端口号不对应。这个属性的文档很模糊,我在这里或MSDN上找不到任何类似的问题。有没有人知道为什么会这样?
非常感谢帮助。 的Eyal。
答案 0 :(得分:2)
TCP连接双方都有一对独立的(IP, port)
对。您正在将连接到 (address, port)
,但是您正在连接 其他内容。操作系统会自动选择来自IP和端口的适当值。