Я использую COM-порты для подключения к некоторому оборудованию. Я настраиваю соединения RAS для различных COM-портов. Если я подключаюсь к одному устройству за раз, то я могу общаться с этим устройством, используя сокет TCP/IP. Когда я устанавливаю второе соединение, используя вторую последовательную линию с другим устройством, то ОС сообщает, что соединение установлено успешно. Однако если я пытаюсь открыть сокет через это соединение, то оно не получается. Когда я пытаюсь выполнить ping для аппаратных устройств, я обнаруживаю, что не могу связаться ни с первым, ни со вторым устройством. Если я теперь отключу первое соединение RAS, то я смогу открыть сокет для второго устройства.
Windows XP не имеет этой проблемы. Если я проделаю тот же сценарий с XP, я смогу успешно открыть сокеты для обоих устройств одновременно.
Поведение зависит от подключений. Некоторые подключения кажутся независимыми. Я могу открыть 2–3 «независимых» подключения, а затем столкнуться с проблемой при следующем подключении. Когда это происходит, последнее подключение приводит к сбою некоторых предыдущих подключений. Снова сбойное подключение и перестает отвечать на пинг. Удаление Когда любое из этих «коммутируемых» подключений отключается, его пара снова работает.
Я не вижу никакой закономерности в IP-адресах «парных» соединений.
Например, RAS-соединение с 192.168.245.141 не будет работать с RAS-соединением 192.168.245.116, но будет работать с соединением с IP-адресом 192.168.245.113.
Я посмотрел свойства подключений и сделал ipconfig /all и не вижу существенной разницы с XP. Единственное незначительное отличие в том, что XP показывает стандартный физический адрес.
Для Windows 7 вывод ipconfig /all для адаптера следующий:
Адаптер PPP PROACTIV на COM17:
DNS-суффикс, специфичный для соединения. :
Описание . . . . . . . . . . . : PROACTIV на COM17
Физический адрес. . . . . . . . . :
DHCP включен. . . . . . . . . . : Нет
Автоконфигурация включена . . . . : Да
Адрес IPv4. . . . . . . . . . . : 192.168.245.141(предпочтительно)
Маска подсети . . . . . . . . . . . : 255.255.255.255
Шлюз по умолчанию . . . . . . . . . :
NetBIOS через Tcpip. . . . . . . : Отключено
Для XP это
Адаптер PPP PROACTIV на COM17:
DNS-суффикс, специфичный для соединения. :
Описание . . . . . . . . . . : Интерфейс WAN (PPP/SLIP)
Физический адрес. . . . . . . . : 00-53-45-00-00-00
DHCP включен. . . . . . . . . . : Нет
IP-адрес. . . . . . . . . . . : 192.168.245.141
Маска подсети . . . . . . . . . . . : 255.255.255.255
Шлюз по умолчанию . . . . . . . . . :
NetBIOS через Tcpip. . . . . . . : Отключено
Буду признателен за любую помощь.
Рассел
решение1
После дальнейшего расследования выяснилось, что причина проблемы заключается в том, что Windows 7 добавляет в таблицу маршрутизации только половину записей и, в частности, пропускает маршрут от адаптера PPP до устройства на другом конце соединения.
Я обнаружил, что PPP-соединения работают, если я вручную запускаю команду
добавить маршрут 192.168.245.dd 192.168.245.pp
где 192.168.245.dd — IP-адрес устройства
а 192.168.245.pp — это IP-адрес адаптера PPP
Эта запись автоматически появляется в таблице маршрутизации для XP при запуске соединения, но не для Windows 7.
Рассел