0

クライアントからのHTTPリクエストをキャッチするためのソケットサーバーがあります。クライアントのIPを取得したいので、次のコードを使用しました。

var sIp = (socket.RemoteEndPoint.ToString().Split(':'))[0];
IPAddress rIp = IPAddress.Parse(sIp);
string clientIp = rIp.ToString();

しかし、返されたIpが間違っていて、例外がありました:''rIp'はタイプ'System.Net.Sockets.SocketException'の例外をスローしました

誰かがこの場合の解決策を持っていますか?そんなにTks。

4

1 に答える 1

0

MSDNのsocket.RemoteEndpointに関する情報:http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.remoteendpoint.aspx

重要な部分は、「情報を取得する前に、このEndPointをIPEndPointにキャストする必要がある」です。

したがって、コードは次のように書き直すことができます。

IPEndPoint remoteIP = (IPEndpoint)socket.RemoteEndPoint();
IPAddress rIp = (IpAddress)remoteIP.Address;
string clientIP = rIp.ToString()

ただし、rIpは必要ありません。次のようにするだけです。

IPEndPoint remoteIP = (IPEndpoint)socket.RemoteEndPoint();
string clientIP = remoteIP.Address.ToString();
于 2012-10-10T05:17:31.367 に答える