TCPListener за маршрутизатором (порт переадресован) у меня не работает - PullRequest
0 голосов
/ 15 декабря 2018

Если я подключаю свой компьютер напрямую к Интернету, все в порядке, однако с подключенным маршрутизатором следующий код застревает в readline:

`

TcpListener webserver = new TcpListener(IPAddress.Any, 1302);
webserver.Start(); 
Debug.WriteLine("Started");
TcpClient client = webserver.AcceptTcpClient();
Debug.WriteLine("Client accepted");
sr = new StreamReader(client.GetStream());
sw = new StreamWriter(client.GetStream()); 
   try
  {
      string req = sr.ReadLine();
      Debug.WriteLine("Request: " + req);
      if (req != null)
      { 
        //HTTP/1.0 200 OK\n
        //+read file to tcpstream
      }`

Я не пытаюсьсоздать веб-сервер Я просто тестирую вещи с помощью TCP.Если я использую http://192.168.1.100:1302/ в веб-браузере или моем общедоступном IP-адресе без маршрутизатора, веб-страница загружается, поэтому я предполагаю, что это связано с моим маршрутизатором, или мне нужно реализовать что-то еще?Я вижу следующее:

  1. readline застрял (если я обновляю страницу несколько раз, GET / HTTP / 1.1 получает провал) Если я использую read (), я вижу загрузку-1

  2. Я использовал wireshark и вижу много серых пакетов и много повторных передач: wireshark

Сначала я застрял, я подумал, что мне нужно реализовать Upnp или nat punch, но поскольку некоторые вещи проходят, я не думаю, что установление соединения является проблемой.

Почему существует пакетпроигрыши?С чего мне начинать отлаживать проблему?

ОБНОВЛЕНИЕ № 1: Клиент (веб-браузер Chrome) - это тот же компьютер, но я пробовал использовать и внешние компьютеры (с маршрутизатором и без него), а также тот же результат.1026 *

ОБНОВЛЕНИЕ № 2: Я думаю, что я мог бы знать, в чем проблема, я только что попробовал внешний тестер веб-страницы, и не было никаких проблем, пока все устройства были в одном и том же ISP.Я должен попробовать это с vpn или устройством, которое находится за пределами моей сети ISP.

1 Ответ

0 голосов
/ 16 декабря 2018

Я не знаю, нормально это или нет, но из-за потери пакетов большинство пакетов никогда не поступает в мое приложение.Эта проблема вызвана моим маршрутизатором (и, может быть, sg. Else), но я даже пытался подключиться к своему приложению с другими устройствами в том же ISP той же проблемы.Я подтвердил это с помощью vpn, а также с другим компьютером с другим провайдером.

...