Являясь новичком в сети 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 Port (46715 в моем примере) и откуда оно взялось? Спасибо.
Сокет TCP является двухсторонним соединением - локальная конечная точка - сторона вашего клиента, удаленная конечная точка - сторона сервера - что сервер находится на том же оборудовании, что и клиент, это не значит, что у вас еще нет трубы с двумя концами. Номер локального порта определяется стеком TCP во время соединения. –
Ответ на [этот вопрос] (https://stackoverflow.com/questions/13190176/how-does-port-number-really-work-in-tcp) может помочь вам, ваш вопрос менее специфичен для .Net 'TcpClient' и, в более общем плане, о том, как работает TCP/IP. –