Сервер VB.NET не получает запросы на подключение от удаленных клиентов - PullRequest
0 голосов
/ 16 марта 2019

VB.NET-сервер не получает запросы на подключение от удаленных клиентов

Серверное приложение VB.NET не видит запросы на подключение от другого клиента в сети (т. Е. С другим IP-адресом). Однако он видит запросы на подключение от клиентского приложения, работающего на том же компьютере, что и сервер.

Разъем для прослушивания создается со следующими параметрами

System.Net.Sockets.AddressFamily.InterNetwork

System.Net.Sockets.SocketType.Stream

System.Net.Sockets.ProtocolType.IP

Мы экспериментировали с предшествующим безуспешно.

Конечная точка, к которой привязан прослушивающий сокет, указывает локальный IP-адрес и конкретный номер порта.

Код ожидания соединения является асинхронным в учебнике:

thelistener.Listen(10)
thelistener.BeginAccept(New System.AsyncCallback(AddressOf targetofaccept), thelistener)

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

Такое поведение наблюдается для любого другого клиента в сети (т. Е. Не только для одного).

Думая, что возникла какая-то проблема с брандмауэром, мы создали серверы и клиенты VB6, используя те же адреса и порты. Сервер VB6 будет получать запросы на подключение независимо от клиентской системы.

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

Мы отлаживаем код как консольное приложение VB.NET.

Любые советы по диагностике приветствуются.

Ответы [ 2 ]

0 голосов
/ 16 марта 2019

Спасибо.

Выпуск брандмауэра WAS. Исправлено путем поиска точного местоположения среды IDE (devenv.exe), открытия «Брандмауэра Windows» на панели управления, выбора «Разрешить выполнение программы или функции через брандмауэр», выбора «Разрешить другую программу ...» и перехода к точному местоположению. и выбрав исполняемый файл, а затем проверив столбец «Дом / Работа (Частный)» для этого «Имя».

0 голосов
/ 16 марта 2019

Перед вызовом Listen() вам необходимо привязать сокет слушателя к адресу 0.0.0.0 (в .NET IPAddress.Any), чтобы он прослушивал соединения от любой IP-адрес.

Это можно сделать, используя Socket.Bind() метод :

Dim listenerEndpoint As New IPEndPoint(IPAddress.Any, <your port>)
thelistener.Bind(listenerEndpoint)

thelistener.Listen(10)
...