1

何らかの理由で、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();

    }
4

1 に答える 1

1

これは、デフォルト ゲートウェイが以前はルーター/IP ファイアウォールでしたが、現在はプロキシ/アプリケーション ファイアウォールである場合に発生する可能性があります。

この場合、IP 接続はプロキシによってインスタンス化されるため、実際のクライアントではなくプロキシの IP アドレスが表示されます。

于 2013-08-14T08:54:39.633 に答える