Знает кто-нибудь как можно узнать текущие активные сиссии. Как, например, nbtstat -s или как показывают файрволы.
В частности если я зашел на сервер в локалке и качаю файл, чтобы она показала хотя бы куда(откуда) я качаю.
NetSessionEnum почему-то показывает только входящие сессии (руки у меня видимо кривые), NetConnectionEnum требует чтобы был указан удаленный сервер, сессии с которым нужно показывать...
Помогите пожалуйста!!!
Здравствуйте, vasketsov, Вы писали:
V>http://zw.nightmail.ru/_tcp.htm V>код внизу страницы. V>ZwDeviceIoConrolFile замени на DeviceIoControl.
Огромное спасибо, Сергей !!!
Только непонятно как подключить вот эти типы, у меня их не понимает:
IO_STATUS_BLOCK
ARP_SEND_REPLY
TCP_REQUEST_QUERY_INFORMATION_EX
и дригие...
Вроде есть они к некоторых Н-никах, но не совсем те (PIO_STATUS_BLOCK), также полно их в winddk библиотеках.
Как сделать чтобы они были у меня в проге определены (VC 6.0, VC .NET)?
Может кто-нибудь использовал функцию Netbios(&ncb)? С ее помощью возможно решить задачу?
Что-то я никак не могу с ней справиться.
The NCBSSTAT command obtains the status of any sessions that were opened using the specified name. The ncb_buffer member receives a SESSION_HEADER structure, followed by one or more SESSION_BUFFER structures
Здравствуйте, sub-3er0, Вы писали:
S3>Может кто-нибудь использовал функцию Netbios(&ncb)? С ее помощью возможно решить задачу?
S3>Что-то я никак не могу с ней справиться.
это будут только конкретно нетбиос сессии (что далеко не все). если хочешь узнать как ей пользоваться скачай winpopdown здесь в разделе "Файлы", там определяется реальный отправитель нетбиос сообщения (не тот что в самом сообщении пришел а реальный) через эту команду нетбиос
Никак не пойму какое имя нужно вводить в ncb.ncb_name для команды NCBSSTAT, чтобы получить список активных сессий.
Имя моего компа нельзя, имя любого друго в сети тоже — пишет, что не может его добавить. * принимает, но сессии не выводит.
PS. Программа WinPopDown у меня не заработала. Пишет что не может добавить "MyNetworkName".
nbtstat -s выполняет для получения сессий IOCTL-запрос ко всем подряд NetBt-интерфейсам.
Код — 0x210082.
Входного буфера нет.
Выходной — первоначально ставится на 600 байт, потом при необходимости (если ответ будет, что недоатсточный размер буфера) он увеличивается в 2 раза. Если возвращается STATUS_PENDING — придется подождать на hNetBt. После окончания успешного запроса получается список сессий (а на XP не только непосредственно сессий, но и "слушаний") в таком формате.
В самом начале — число записей.
Потом с 16-го байта (считая с нуля) идут 2 имени подряд, локальное и удаленное (по 16 байт, с учетом того, что 16-м байтом считаем тип имени).
Потом с 80-го.
И так далее, то есть, по 64 байта запись.
Если есть оба имени — то это сессия, если тольео локальное — сесси нет (есть пример этого для XP, хочешь — вышлю).
Вот пример (на Windows 2000).
Вот что выдает nbtstat -s.
NetBIOS Connection Table
Local Name State In/Out Remote Host Input Output
----------------------------------------------------------------------------
VALGALLA Connected In NT4WKS <00> 1KB 2KB
IPP Connected In NT4WKS <00> 567B 437B
ZERAM Connected In NT4WKS <00> 1KB 1KB
А вот что программно (в начале выведен код, буфер и результат запроса).
Если хочешь, вышлю програмку, которой это получено, и текстовые файлы с примерами на разных системах от NT4 до XP.
Хотя, если надо только имена компов в сессии, и этого достаточно.
Здравствуйте, vasketsov, Вы писали:
V>Если хочешь, вышлю програмку, которой это получено, и текстовые файлы с примерами на разных системах от NT4 до XP. V>Хотя, если надо только имена компов в сессии, и этого достаточно.
Да !!! Именно это и нужно. вышли все пожалуйста sub-3er0@mail.ru.