Сокеты VB.NET неожиданно закрываются - PullRequest
0 голосов
/ 03 мая 2018

Я ломаю голову над этим.

У меня есть это приложение, которое состоит из 1 сервера и 2 клиентов, подключающихся к нему. 1 Клиент находится в той же локальной сети, что и сервер, второй клиент подключается через Интернет. Клиенты должны постоянно поддерживать соединение, потому что и сервер, и клиент должны иметь возможность отправлять данные по требованию. Чтобы предотвратить тайм-ауты, я посылаю несколько байтов назад и вперед каждые 5 секунд. Эта настройка работала в течение многих лет, когда оба клиента работали на WinXP, а сервер - на Win10 (около года назад сервер был обновлен с XP до 10).

Поскольку 2 клиента были обновлены до Win10, у меня очень нестабильное TCP-соединение, которое случайно разрывается. Я добавил исключения брандмауэра и даже добавил папку приложения в список игнорирования Защитника Windows.

На данный момент я даже не могу определить, какая сторона на самом деле разрывает соединение, сервер или клиенты или что-то среднее.

На сервере я получаю эту ошибку (перевод с голландского):

System.IO.IOException: невозможно прочитать данные из транспортного соединения: попытка подключения не удалась, потому что подключенная сторона не ответила должным образом через определенный промежуток времени, или не удалось установить соединение, так как подключенный хост не смог ответить.

На клиентах я получаю:

System.IO.IOException: невозможно прочитать данные из транспортного соединения: установленное соединение было прервано программным обеспечением на хост-компьютере

Я гуглил и гуглил, и большинство говорят, что я должен использовать wireshark, чтобы отследить источник, так что я сделал, но не понимаю сетевой протокол достаточно, чтобы выяснить, что происходит.

Вот файл pcapng: https://drive.google.com/file/d/1NkP4dAWC7y9mvCYgKtcazB9Obk-TIYpK/view?usp=sharing

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...