Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Tcp端口连接显示不兼容的值_C#_Tcp_Port_Tcpclient_Tcplistener - Fatal编程技术网

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

C# Tcp端口连接显示不兼容的值,c#,tcp,port,tcpclient,tcplistener,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.

考虑以下代码:

 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.

TCP连接两侧都有一个独立的
(IP,端口)
对。您正在连接到
(地址、端口)
,但您是从其他地方连接的。操作系统会自动选择from IP和port作为合适的值。

您永远不会点击
客户端。Connect
@AbdullahSaleem-请注意我关于阻塞的评论-我希望示例尽可能简单。这就是我忽略阻塞的原因。实际实现解决了这一问题。谢谢你!对封锁有何评论?在客户端连接之前,您不能接受连接。这两行的顺序不对。此代码的行为与所述不符。实际上,如果您不正确,您可以接受连接,这将阻止连接,直到连接被接受。。但是,如果服务器不接受,则无法连接。我提到的注释是代码块中唯一的注释@EJPI也怀疑这一点。有没有办法获得我想看到的信息?是否在客户端指定的端口上尝试连接?您需要知道哪个端口?远程端口?您的代码按原样工作。LINQPad:var client=new System.Net.Sockets.TcpClient();client.Connect(“google.com”,80);var address=((System.Net.IPEndPoint)client.client.RemoteEndPoint).address;var port=((System.Net.IPEndPoint)client.client.RemoteEndPoint).port;address.Dump();port.Dump();假设我在端口13000连接到服务器,我希望在TcpListener返回的值中看到该数字。这可能吗?当然不是在侦听器中,而是在客户机中。侦听器未连接。我猜你指的是客户?不管怎样,你可以问任何一个客户,得到这个信息。您拥有的代码应该可以工作,我还发布了可执行代码,您可以这样运行。这回答了问题吗?