サーバーがリモートホストであるC#で1つのクライアントサーバーアプリケーションを構築しています。ネットワークにルーターとファイアウォールがあります。
私のクライアント側のコードは
hostSocket = new TcpClient();
hostSocket.Connect(serverIp, serverPort);
そして私のサーバーサイドコードは
eqListner = new TcpListener(IPAddress.Parse(eqIp), eqPort);
このシナリオでは、ip 127.0.0.1を指定することで同じPC上のクライアントに接続できますが、ネットワーク内の別のPCでサーバーを実行した場合は接続できません。
次に、次のようにしてサーバー側のコードを変更しました。
IPAddress ipAddress = Dns.GetHostEntry(Dns.GetHostName()).AddressList[0];
IPEndPoint ipLocalEndPoint = new IPEndPoint(ipAddress, eqPort);
TcpListener eqListner = new TcpListener(ipLocalEndPoint);
しかし、それでも結果は同じです。次に、これによってサーバー側のコードを再度変更しました。
eqListner = new TcpListener(IPAddress.Any, eqPort);
そして、これは完全にうまく機能します。のmsdnを読んだIPAddress.Any
ところ、このプロパティにより、すべてのネットワークインターフェイスでクライアントアクティビティをリッスンするようにサーバーが設定されていることがわかりました。
私の質問は、なぜIPAddress.Anyがリモートホストに接続する必要があるのかということです。と他の機能は接続できませんか?
前もって感謝します....