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 с хостом.

Две недели убитые на эту проблему результата так и не принесли (:


--
С наилучшими пожеланиями,
Николай Войнов

Ответить