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' 的异常

有人对此案有解决方案吗?太感谢了。

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 回答