web-dev-qa-db-ja.com

リモートソケットエンドポイントのIPアドレスの取得

接続されたソケットのリモートIPアドレスを確認するにはどうすればよいですか?

アクセス可能なRemoteEndPointオブジェクトと、そのAddressFamilyメンバーがあります。

これらを利用してIPアドレスを見つけるにはどうすればよいですか?

ありがとう!

現在試行中

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

localhostエンドポイントで127.0.0.1ではなく1.0.0.127を取得します。これは正常ですか?

35
bobber205

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);
}
61
Cory Charlton

RemoteEndPointはプロパティであり、そのタイプは System.Net.EndPoint です。これは System.Net.IPEndPoint を継承します。

IPEndPointの members を見ると、Addressプロパティがあることがわかります。

6
Bertrand Marron
string ip = ((IPEndPoint)(testsocket.RemoteEndPoint)).Address.ToString();
3
user3235770