无法通过Socket Server获取Client Ip

时间:2012-10-10 03:06:57

标签: c# sockets ip

我有一个套接字服务器来捕获来自客户端的HTTP请求。我想获得Client的Ip所以我使用了这些代码:

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

但Ip返回错误并且存在异常:''rIp'抛出类型'System.Net.Sockets.SocketException'的异常

有没有人能解决这个案子? Tks这么多。

1 个答案:

答案 0 :(得分: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();