views:

100

answers:

1
 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 of 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.

A: 

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)

Vadmyst