Можете ли вы получить имя хоста и порт из System.Net.Sockets.TcpClient? - PullRequest
7 голосов
/ 04 января 2009

Возможно ли получить базовое имя хоста / порт из нового TcpClient?

TcpListener listener = new TcpListener(IPAddress.Any, port);
TcpClient client = listener.AcceptTcpClient();
// get the hostname
// get the port

Я обошел вокруг client.Client (System.Net.Socket), но там тоже ничего не могу найти. Есть идеи?

Спасибо всем.

1 Ответ

14 голосов
/ 04 января 2009

Не проверено, но я бы попробовал следующее:

TcpListener listener = new TcpListener(IPAddress.Any, port);
TcpClient client = listener.AcceptTcpClient();

IPEndPoint endPoint = (IPEndPoint) client.Client.RemoteEndPoint;
// .. or LocalEndPoint - depending on which end you want to identify

IPAddress ipAddress = endPoint.Address;

// get the hostname
IPHostEntry hostEntry = Dns.GetHostEntry(ipAddress);
string hostName = hostEntry.HostName;

// get the port
int port = endPoint.Port;

Если вы можете обойтись с IP-адресом, я бы пропустил обратный поиск DNS, но вы специально запросили имя хоста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...