TcpListener: прослушивание каждого адреса, включая IP-адрес GPRS. - PullRequest
11 голосов
/ 03 февраля 2009

У нас есть простое устаревшее программное обеспечение, с которым нам нужно общаться через TCP / IP через порт 15001. Нам нужно прослушивать порт 15001 чтобы устаревшее программное обеспечение установило соединение, а затем прочитало все, что оно нам отправляет.

Мы протестировали это решение в интернете, и оно отлично работает. Однако если мы тестируем одно и то же решение в сети GPRS TCP / IP, это не так.

Все основы были проверены, мы можем пинговать другие устройства в сети GPRS и порт 15001 не заблокирован никаким брандмауэром.

Так, может, что-то не так с моим TcpListener?

Инициализируется так:

tcpServer = new TcpListener(IPAddress.Any, TCP_PORT);

Я предполагаю, что он прослушивает все доступные интерфейсы с включенным IPv4 в системе, потому что я использовал IPAddress.Any?

Кто-нибудь знает, в чем разница между двумя сетями? (Хотя не должно быть никакой разницы) и если есть что-то, что мне нужно изменить на мой TcpListener?

1 Ответ

12 голосов
/ 03 февраля 2009

Вам нужно указать IP-адрес, который вы хотите прослушивать, вместо IPAddress.Any. Смотрите здесь . Когда вы используете IPAddress.Any, он автоматически выберет сетевой интерфейс для вас. Для прослушивания определенного интерфейса (в вашем случае GPRS) вы должны использовать правильный IP в конструкторе.

Этот пост содержит больше информации о получении IP-адреса для каждого ник.

Кроме того, если вы хотите прослушивать каждый IP-адрес сразу, вам понадобится TcpListener для каждого ник.

...