由于某种原因,C# socket.RemoteEndPoint 开始返回默认网关的地址。它曾经工作,我知道代码没有改变。我不确定它什么时候开始发生,因为日志没有回溯到足够远的地方,所以我不确定这台服务器可能发生了什么导致这种情况。一切似乎都在正常工作。只是不再获得远程IP。
任何人都知道可能导致这种情况的原因吗?
这是相关的代码。
public void startClientListening(string ipString, int port)
{
IPAddress ip = IPAddress.Parse(ipString);
// Create the listening socket...
clientListenerSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ipLocal = new IPEndPoint(ip, port);
// Bind to local IP Address...
clientListenerSocket.Bind(ipLocal);
// Start listening...
clientListenerSocket.Listen(32);
// Create the call back for any client connections...
clientListenerSocket.BeginAccept(onClientConnect, clientListenerSocket);
}
private void onClientConnect(IAsyncResult asyn)
{
Socket workerSocket = clientListenerSocket.EndAccept(asyn);
workerSocket.NoDelay = true;
//This returns 192.168.1.1 rather than the remoteIp
string remoteIp = ((IPEndPoint)workerSocket.RemoteEndPoint).Address.ToString();
}