开发者

How to get an ip address from an IPEndPoint obtained in a socket

 ipEndReceive = new IPEndPoint(IPAddress.Parse("127.0.0.1"), receivePort);
 receiveSock = new Socket(AddressFamily.InterNetwork, SocketType.Stream
                          , ProtocolType.Tcp);

 ErrorLog.WritetoErrorlog("Trying to Bind IP Address Stored in  Variable : "
                          +ipEndReceive.Address.ToString()
                          +"\n Port No :"+ipEndReceive.Port.ToString(), logPath);

 receiveSock.Bind(ipEndReceive);


 ErrorLog.WritetoErrorlog("\nRemote IP Address : " 
                    + ((IPEndPoint)receiveSock.RemoteEndPoint).Address.ToString()
                    + "\n Local IP:" 
                    + ((IPEndPoint)receiveSock.LocalEndPoint).Address.ToString()
                    , logPath);

Here receiveSock.RemoteEndPoint returns me an instance o开发者_Go百科f EndPoint rather than IPEndPoint due to which i m not able to get the remote ip address from where request has been received. Do we have any way to get it from this socket.


Socket RemoteEndpoint will be set after socket is connected.

That means that logging RemoteEndpoint after bind is not correct.

The RemoteEndPoint is set after a call to either Accept or Connect. If you try to access this property earlier, RemoteEndPoint will throw a SocketException. If you receive a SocketException, use the SocketException::ErrorCode property to obtain the specific error code. After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation in the MSDN library for a detailed description of the error."

(from MSDN)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜