TcpClient- как подключиться к внешнему IP-адресу?
Я пытался настроить базовый сценарий, где TcpClient
подключается к TcpListener
на той же машине, но пока она работает только для 127.0.0.1
а также 192.168.X.Y
, Вот мой код:
var server = new TcpListener(IPAddress.Any, 51328);
server.Start();
var client = new TcpClient();
client.ConnectAsync(IPAddress.Parse("address from whatismyip"), 51328);
server.AcceptTcpClient(); // hangs indefinitely here
Console.ReadKey();
Я получил свой внешний адрес от whatismyip, но я не уверен, правильно ли я это делаю. Что-то не так с моей процедурой?
1 ответ
Я предполагаю, что вы пытаетесь подключиться через Интернет? Если вы подключены через какого-либо интернет-провайдера, такого как COMCAST, то, возможно, у вас есть кабельный модем? Для этого вам нужно настроить переадресацию PORT на маршрутизаторе.
Интернет видит только ваш кабельный модем, все ваши запросы в Интернет отправляются как IP-адрес кабельных модемов, маршрутизатор может "маршрутизировать" пакеты на ваш адрес 192.168.xx и от вашего имени, чтобы ваш 192.168 машина будет в состоянии слушать и принять, вы должны указать маршрутизатору пересылать любые сообщения через порт 51328 на вашу машину.
Таким образом, ваш код будет прослушивать порт 51328, используя адрес 192.168.x.xx, а затем вы настраиваете маршрутизатор. Чтобы проверить это, вы должны подключиться, используя общедоступный интернет-адрес, назначенный вашему модему.