如何确定已连接套接字的远程IP地址?
我有一个可以访问的RemoteEndPoint对象以及它的AddressFamily成员。
如何利用这些来查找IP地址?
谢谢!
目前正在尝试
IPAddress.Parse( testSocket.Address.Address.ToString() ).ToString();
为localhost端点获取1.0.0.127而不是127.0.0.1。这是正常的吗?
答案 0 :(得分:60)
http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.remoteendpoint.aspx
然后,您可以调用IPEndPoint .. ::。Address方法来检索远程IPAddress,并使用IPEndPoint .. ::。Port方法来检索远程端口号。
更多来自链接(修复了很多嘿):
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);
}
答案 1 :(得分:5)
RemoteEndPoint是一个属性,其类型为System.Net.EndPoint,它继承自System.Net.IPEndPoint。
如果您查看IPEndPoint的members,您会发现有一个Address
属性。
答案 2 :(得分:3)
string ip = ((IPEndPoint)(testsocket.RemoteEndPoint)).Address.ToString();
答案 3 :(得分:-1)
我在VB.NET中制作了这段代码,但你可以翻译。 假装你有变量客户端作为 TcpClient
Dim ClientRemoteIP As String = Client.Client.RemoteEndPoint.ToString.Remove(Client.Client.RemoteEndPoint.ToString.IndexOf(":"))
希望它有所帮助!欢呼声。