Клиент не может получить доступ к серверу, который связывает адрес обратной связи в 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));