Клиент не может получить доступ к серверу, который связывает адрес обратной связи в C#

Теперь сокет на стороне сервера связывает 192.168.1.69:9000, и затем начинает слушать. Клиент подключается к серверу, используя 127.0.0.1:9000. Но потерпеть неудачу. Однако это работает, когда клиент подключается к серверу, используя 192.168.1.69:9000.
Клиент и сервер работают на одном компьютере.
Мой вопрос: он должен быть успешным, когда клиент, используя адрес обратной связи, подключается к серверу, но не работает. Почему?

Server Code:
this.pro_ListenSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
this.pro_ListenSocket.ReceiveBufferSize = this.pro_BufferSize;
this.pro_ListenSocket.SendBufferSize = this.pro_BufferSize;
try
{
     this.pro_ListenSocket.Bind(new IPEndPoint(this.pro_ServerIP, this.pro_Port));
}
catch (SocketException socketError)
{
     return false;
}
catch (Exception)
{
     return false;
}
try
{
     this.pro_OnRunning = true;
     this.pro_ListenSocket.Listen(500);
     this.StartToAcceptClient(this.pro_ListenSocket);
}
catch (Exception ex)
{
    return false;
}

1 ответ

Решение

Loopback представлен как сетевой адаптер, как и любой другой. Вы настроили свой сервер на прослушивание только подключений на адаптере в 192.168.1.69. Если вы хотите, чтобы ваш сервер прослушивал дополнительные адаптеры, самый простой подход - сделать его доступным для всех доступных адаптеров, указав адрес IPAddress.Any (0.0.0.0).

this.pro_ListenSocket.Bind(new IPEndPoint(IPAddress.Any, this.pro_Port));
Другие вопросы по тегам