2009-12-14 3 views
31

Wie kann ich die Remote-IP-Adresse eines angeschlossenen Sockets ermitteln?Ermitteln der IP-Adresse eines Remote-Socket-Endpunkts

Ich habe ein RemoteEndPoint-Objekt, auf das ich zugreifen kann und genau wie sein AddressFamily-Mitglied.

Wie verwende ich diese, um die IP-Adresse zu finden?

Danke!

versucht derzeit

IPAddress.Parse(testSocket.Address.Address.ToString()).ToString(); 

und 1.0.0.127 für localhost Endpunkte statt 127.0.0.1 bekommen. Ist das normal?

Antwort

56

http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.remoteendpoint.aspx

Sie können dann die IPEndPoint nennen .. ::. Adresse Methode der Remote-IP-Adresse und die IPEndPoint abrufen .. ::. Port-Methode, um die Remote-Portnummer abzurufen.

mehr von der Verbindung (fixed up viel He):

Socket s; 

IPEndPoint remoteIpEndPoint = s.RemoteEndPoint as IPEndPoint; 
IPEndPoint localIpEndPoint = s.LocalEndPoint as IPEndPoint; 

if (remoteIpEndPoint != null) 
{ 
    // Using the RemoteEndPoint property. 
    Console.WriteLine("I am connected to " + remoteIpEndPoint.Address + "on port number " + remoteIpEndPoint.Port); 
} 

if (localIpEndPoint != null) 
{ 
    // Using the LocalEndPoint property. 
    Console.WriteLine("My local IpAddress is :" + localIpEndPoint.Address + "I am connected on port number " + localIpEndPoint.Port); 
} 
5

RemoteEndpoint eine Eigenschaft ist, seine Art ist, die sich von System.Net.EndPointSystem.Net.IPEndPoint erbt. Wenn Sie sich IPEndPoints members ansehen, werden Sie sehen, dass es eine Address Eigenschaft gibt.

+1

Alles, was ich für RemoteEndPoint-Mitglieder verfügbar sehe, ist AddressFamily. Wie bekomme ich Zugang zu Adresse? – bobber205

+1

((System.Net.IPEndPoint) socket.RemoteEndPoint). Adresse –

+0

Vielen Dank! :) Ich versuche Zeichenfolge remoteIP = IPAddress.Parse (testSocket.Address.Address.ToString()) .ToString(); und "1.0.0.127" anstelle von "127.0.0.1" für localhost-Verbindungen erhalten. Ist das normal? – bobber205

2
string ip = ((IPEndPoint)(testsocket.RemoteEndPoint)).Address.ToString(); 
0

Ich habe diesen Code in VB.NET gemacht, aber Sie können übersetzen. Nun vorgeben Sie die Variable Client als TcpClient

Dim ClientRemoteIP As String = Client.Client.RemoteEndPoint.ToString.Remove(Client.Client.RemoteEndPoint.ToString.IndexOf(":")) 

Hoffe, es hilft! Prost.