Tcp端口连接显示不兼容的值

时间:2015-06-13 11:02:05

标签: c# tcp port tcpclient tcplistener

请考虑以下代码:

 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。

1 个答案:

答案 0 :(得分:2)

TCP连接双方都有一对独立的(IP, port)对。您正在将连接到 (address, port),但是您正在连接 其他内容。操作系统会自动选择来自IP和端口的适当值。