Konstantin R. Beliaev пишет:
Plotnikov Y. wrote:
1) почему process id одинаковый? вообще, как такое возможно, я почему то
думал что это что то типа первичного ключа и быть одинаковым не может.
Или
может прио врет?
Думаю, прио врет.
И подозреваю что проблема в опции сокета листенера inherit_handles. Даже
общался на этот предмет с SysInternals, обещали подумать, как распознать
кому принадлежит какой коннект, но результата пока нет.
Товарищ по работе разгребался с этим вопросом. Вот что он говорит:
Sysinternals вряд ли решит эту проблему,т.к. это проблема виды. Т.е.
винда не имеет API для получения связи PID c портом. Исключением
является XP и выше , в которых эта функция есть
(AllocateAndGetTCPTableEx), но работает неверно, приблизительно таким
образом как описано ниже.
tcpview работает след. образом:
получает открытый localport для каждого PID с помощью драйвера и
сопоставляет этот номер локального порта с таблицей открытых сокетов
(GetTCPTable) в системе. Поскольку все процессы FB имеют Localport 3050,
то и соотвественно TCPView и подобные находят первый попавшийся открытый
сокет и его отображают. Поэтому мы видим один и тот же PID для разных
хостов.
В действительности все немного сложнее, но данных механизм в общих
чертах используется почти всеми программами (проверяли пять программ),
которые показывают связь PID с хостом.
Две недели убитые на эту проблему результата так и не принесли (:
--
С наилучшими пожеланиями,
Николай Войнов