winsock - вопрос по "сканированию" сети

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
v-adix
Постоялец
Постоялец
 
Сообщения: 490
Зарегистрирован: 14.11.2002 (Чт) 15:11

winsock - вопрос по "сканированию" сети

Сообщение v-adix » 16.04.2003 (Ср) 18:03

скажите пожалуйста как можно получить IP адреса или имён компов в локальной сети? другими словами, "просканировать" сеть. для чего мне это нужно:
у меня две программы (1-клиент 2-сервер). нужно просканировать сеть и найти на каком компе стоит моя прога - сервер и подключиться.
просто уже надоела надпись "введите IP адрес" и потом, в моей программе это было бы некрасиво. кто может помочь?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 17.04.2003 (Чт) 10:14

При запуске клиент посылает на всю сеть (броадкастом, по UDP-протоколу) "Сервер! Отзовись!". А сервер имеет один сокет, который слушает UDP и в ответ на это говорит "Эй! Я здесь! По адресу ...". А клиент, в свою очередь, в течении (например) 5 секунд ловит ответы и записывает адреса.

Или тебе надо в коде?
Lasciate ogni speranza, voi ch'entrate.

v-adix
Постоялец
Постоялец
 
Сообщения: 490
Зарегистрирован: 14.11.2002 (Чт) 15:11

Сообщение v-adix » 17.04.2003 (Чт) 11:40

ок, а как послать на всю сеть запрос?
если есть код или пример пришли мне
v-adix@yandex.ru

f0rbeed
Обычный пользователь
Обычный пользователь
 
Сообщения: 68
Зарегистрирован: 18.12.2002 (Ср) 17:51
Откуда: Russia

Сообщение f0rbeed » 17.04.2003 (Чт) 12:14

Если сеть класса C, то Dest. Host будет таким как 192.168.45.255. То есть последние три цифры 255. Это и есть броадкаст. 255.255.255.255 то же броадкаст, но его лучше не использовать, при чем Dest MAC будет FF:FF:FF:FF:FF:FF. Но это уже винсок контрол сам делает.
Так быстро, что незаметно...

v-adix
Постоялец
Постоялец
 
Сообщения: 490
Зарегистрирован: 14.11.2002 (Чт) 15:11

Сообщение v-adix » 17.04.2003 (Чт) 13:11

тоесть нужно три последние цифры сделать 255? взять любой ip адрес, даже свой можно?
и тогда мой запрос получат все компьютеры сети?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 17.04.2003 (Чт) 15:16

С чего любой?!!
Для броадкаста задавай адрес, соответствующий выражению
(Address Or Not Mask), здесь Address -- адрес сети, а Mask -- маска сети.
Адрес сети, в которой ты находишься: (IPAdr And Mask)
Lasciate ogni speranza, voi ch'entrate.

v-adix
Постоялец
Постоялец
 
Сообщения: 490
Зарегистрирован: 14.11.2002 (Чт) 15:11

Сообщение v-adix » 17.04.2003 (Чт) 17:30

я не разбираюсь в этих mask! скажите мне что надо написать в RemoteHost у винсока.
и вообще, где можно прочитать про этот mask? дайте ссылочку

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 17.04.2003 (Чт) 17:39

Как правило, используется маска 255.255.255.0. Это значит, что тебе нужно в качестве последнего байта в IP-адресе указать 255. Т.е. если IP-адрес твоей машины 192.168.1.30, то броадкаст на твою сетку будет 192.168.1.255, его и надо использовать (а твоя сетка -- это 192.168.1.0)
Lasciate ogni speranza, voi ch'entrate.

v-adix
Постоялец
Постоялец
 
Сообщения: 490
Зарегистрирован: 14.11.2002 (Чт) 15:11

Сообщение v-adix » 18.04.2003 (Пт) 10:26

спасибо, понял!
тема закрыта

Лёха_Virus
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 168
Зарегистрирован: 24.03.2003 (Пн) 17:13
Откуда: Анграск

Сообщение Лёха_Virus » 21.04.2003 (Пн) 17:17

извините, я не въезжаю немного...
мож код есть?

у меня такая фича: нужно просканировать определённый диапазон на открытые порты, и если такие есть - определить имена пользователей этих компов. помогите плз!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 22.04.2003 (Вт) 8:31

Что значит просканировать? Просто попытайся подключиться с помощью винсока. Если получится -- значит порт открыт.
А имена пользователей компьютеров определяются командой NBTSTAT, отправляешь команду "nbtstat -A 192.168.---.---" и анализируешь ответ, строка с ID=<03> -- это пользователи (их будет два, аккаунт машины и аккаунт залогиненного(ных) пользователя)
Lasciate ogni speranza, voi ch'entrate.

X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Сообщение X-BOND » 17.06.2003 (Вт) 17:28

Еще такой вопрос:

А если у меня в сетке присутствуют адреса самые разные:
192.168.0.1
192.168.0.2
192.168.1.1
192.168.4.7
и т.д.

То по идее броадкастом для них будет 192.168.255.255
Но я пробовал, ответов так и не дождался.
В чем здесь ньюанс?

И еще, как я понял, броадкаст доступен только с протоколом UDP или я ошибаюсь?


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 4

    TopList  
cron