3
作爲C#網絡的初學者,我編寫了一個簡單的Client-Server應用程序。我正在連接到服務器正在偵聽的本地IP地址和端口8080。RemoteEndPoint與LocalEndPoint
在客戶端:
IPAddress remoteaddr = IPAddress.Parse("127.0.0.1");
int port = 8880;
TcpClient tcpclient = new TcpClient();
tcpclient.Connect(remoteaddr, port);
NetworkStream networkstream = tcpclient.GetStream();
IPEndPoint RemAddr = (IPEndPoint)tcpclient.Client.RemoteEndPoint;
IPEndPoint LocAddr = (IPEndPoint)tcpclient.Client.LocalEndPoint;
if (RemAddr != null)
{
// Using the RemoteEndPoint property.
Console.WriteLine("I am connected to " + RemAddr.Address + "on port number " + RemAddr.Port);
}
if (LocAddr != null)
{
// Using the LocalEndPoint property.
Console.WriteLine("My local IpAddress is :" + LocAddr.Address + "I am connected on port number " + LocAddr.Port);
}
輸出爲:
I am connected to 127.0.0.1 on port number 8880
My local IpAddress is :127.0.0.1 I am connected on port number 46715
所以有什麼RemoteEndPoint和LocalEndPoint之間的區別? LocalEndPoint端口的用途是什麼(在我的例子中是46715),它來自哪裏? 謝謝。
TCP套接字是一種雙面連接 - 本地端點是您的客戶端,遠程端點是服務器端 - 服務器與客戶端恰好在同一硬件上並不意味着您仍然沒有兩端管道。本地端口號由TCP堆棧在連接時決定。 –
[這個問題]的答案(https://stackoverflow.com/questions/13190176/how-does-port-number-really-work-in-tcp)可能會幫助你,你的問題不太專用於.Net 'TcpClient'類和更一般的TCP/IP如何工作。 –