7 Stimmen

Können Sie den Hostnamen und den Port von einem System.Net.Sockets.TcpClient abrufen?

Ist es möglich, den zugrunde liegenden Hostnamen/Port von einem neuen TcpClient abzurufen?

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

Ich habe mich in client.Client (a System.Net.Socket ), kann aber auch dort nichts herausfinden. Irgendwelche Ideen?

Vielen Dank an alle.

15voto

Rasmus Faber Punkte 47181

Ungetestet, aber ich würde folgendes versuchen:

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;

Wenn Sie mit der IP-Adresse auskommen, würde ich den Reverse-DNS-Lookup überspringen, aber Sie haben ausdrücklich nach einem Hostnamen gefragt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X