Я настроил простую систему клиент / сервер, но по какой-то причине клиент не подключается через Интернет. Я установил связь между ними на одном компьютере, используя адрес localhost (127.0.0.1) и IP-адрес моей локальной сети (192.168.2.2).
Я также подтвердил, что порт открыт с помощью http://www.whatsmyip.org/ports/,, и когда я использую этот сайт, на сервере запускается функция обратного вызова, поэтому я предполагаю, что сервер работает нормально.
Однако, когда я пытаюсь подключиться к тому же (интернет) IP-адресу / порту от моего клиента, сервер ничего не обнаруживает, и клиент выдает исключение при обратном вызове OnConnect. Я заметил, что свойство RemoteEndPoint clientSocket не устанавливается корректно инструкцией BeginConnect - оно выдает исключение SocketException (10057), когда я на него смотрю. (При подключении через адрес локальной сети работает нормально.)
private void ConnectToServer()
{
clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress ipAddress = IPAddress.Parse(txtIPAddress.Text);
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, Convert.ToInt32(txtPort.Text));
clientSocket.BeginConnect(ipEndPoint, new AsyncCallback(OnConnect), null);
}
Что может помешать клиенту подключаться к серверу через внешний IP-адрес, учитывая, что он может подключаться через IP-адрес локальной сети и что сервер принимает подключения через Интернет?
Я использую Windows 7 и .NET 3.0.
Любой совет с благодарностью. Спасибо.