Я работаю в компании по разработке программного обеспечения, но проблема, похоже, не связана с программированием.
Вот моя установка:
- Windows XP Professional с пакетом обновления 3, все обновлено
- Программа, которая отправляет UDP дейтаграммы
- Программа, которая получает UDP датаграммы
- Брандмауэр Windows разрешает входящие UDP-дейтаграммы через определенный порт (Область действия: Подсеть)
Если я отправляю дейтаграмму UDP по какому-либо порту другим аналогичным машинам, она проходит. Если я отправляю дейтаграмму UDP на тот же компьютер, на котором выполняется отправляющая программа (будь то широковещательная рассылка, локальный IP-адрес или конкретный IP-адрес устройства), программа-получатель ничего не получает.
Я проследил эту проблему до брандмауэра Windows XP, так как в Windows 7 такой проблемы нет (и я не желаю притворяться в Vista). Если исключение, которое я создаю для этого порта UDP в брандмауэре WinXP, установлено для Scope of Subnet, дейтаграмма блокируется, но если я установил для нее значение All Computers или специально ввел мои настройки сети (192.168.2.161 или 192.168.2.0/255.255). 255.0) работает нормально. Использование разных портов UDP не имеет значения.
Я пробовал разные программы для воспроизведения этой проблемы (ServerTalk для отправки и IP Port Spy или PortPeeker для получения), чтобы убедиться, что проблема не в нашем коде, а в том, что дейтаграммы этих программ также были заблокированы. Кроме того, этот компьютер имеет только один сетевой интерфейс, поэтому нет никаких дополнительных странностей сети. Я получаю свой IP с сервера DHCP, так что это простая настройка.
Учитывая, что это не происходит в Windows 7, я должен предположить, что это дефект брандмауэра Windows XP, но я думаю, что кто-то другой столкнулся бы с этой проблемой раньше. Кто-нибудь сталкивался с чем-нибудь подобным? Есть идеи?