Обнаружение работающих компьютеров в сети...

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Lazy_caT
Начинающий
Начинающий
 
Сообщения: 19
Зарегистрирован: 12.09.2002 (Чт) 12:12
Откуда: Russia

Обнаружение работающих компьютеров в сети...

Сообщение Lazy_caT » 02.04.2004 (Пт) 15:58

Привет всем...

Народ, столкнулся я тут с такой проблемкой...
Пишу прогу-messanger, нужно каким-нибудь способом определить работающие компы в сети...
PING не подходит....СЛИШКОМ ДОЛГО.....
может есть ещё какой способ :?:

если возможно, ответы на E-Mail...

---------------------------------------------
Sorry, чуть не забыл (полистал тут форум и решил дописать)...
Программа не имеет сервера, что подразумевает соединение по UDP...
Отсюда, помимо того что нужно узнать работающие компы нужно ещё узнать их IP'шник... хотя это проще... при отсылке "эха" в сеть приходит подтверждение "эха" и IP адрес машины...
Так вот как это эхо отослать :?: и куда :?: так как IP'шник машин в сети изначально неизвестен...

Alfa
Бывалый
Бывалый
 
Сообщения: 249
Зарегистрирован: 12.01.2003 (Вс) 20:15
Откуда: Россия, Красноярск

Ответ

Сообщение Alfa » 07.04.2004 (Ср) 7:30

Есть такая примерно же программа. Токо за ее использование например в сети юзеры готовы башку снести. Nassi называется. Имхо она просто посылает по тупому UDP-сообщения и все.
Изображение

Lazy_caT
Начинающий
Начинающий
 
Сообщения: 19
Зарегистрирован: 12.09.2002 (Чт) 12:12
Откуда: Russia

Re: Ответ

Сообщение Lazy_caT » 07.04.2004 (Ср) 16:07

Alfa писал(а):Есть такая примерно же программа. Токо за ее использование например в сети юзеры готовы башку снести. Nassi называется. Имхо она просто посылает по тупому UDP-сообщения и все.


Знаю такую...
У себя в сети её все юзают....

так вот я и хочу понять как она создаёт список юзеров? пингует сегмент сети на наличие работающих компов? совершенно не понимаю... Там есть настройки отсыла пакетов.... не помню точно какие, но они есть....Тем более если по UDP отсылать пакет... нужно ведь ещё знать куда, на какой IP.... Как она их находит?
Я в свою прогу запихнул подпрограммку, пингует диапазон адресов от *.*.0.1 до *.*.0.255, эффект получается тот который нужен.... она находит в сети все доступные компы и заносит их в список но, это слишком медленно... около 1-1,5 минут...
Может есть варианты как этот процесс ускорить?....
а эффект тот который мне нужен....

Заранее благодарен за ответ....

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

Сообщение alibek » 07.04.2004 (Ср) 16:53

[qoute]Как она их находит?[/qoute]
Ничего она не находит. Просто отсылает широковещательное сообщение (broadcast), а все остальные откликаются. То же можешь сделать и у себя, при запуске твое программа посылает по сети "гей, народ, отзовитесь" и в течении, допустим, 2 секунд ловит ответы.
Только админ тебя за такое по головке не погладит, чат на броадкасте - это тихий ужас для хаба (да и свитча тоже).
Lasciate ogni speranza, voi ch'entrate.

Lazy_caT
Начинающий
Начинающий
 
Сообщения: 19
Зарегистрирован: 12.09.2002 (Чт) 12:12
Откуда: Russia

Сообщение Lazy_caT » 07.04.2004 (Ср) 17:53

>>...skip... отсылает широковещательное сообщение (broadcast), а все остальные откликаются. ...skip...

Если не трудно, подскажи как, т.е. судя по всему "широковещательное сообщение" отсылается на какой-то адрес... где его можно найти...

>>То же можешь сделать и у себя, при запуске твое программа посылает по сети "гей, народ, отзовитесь" и в течении, допустим, 2 секунд ловит ответы.

Это я смогу сделать, нужно только этот адрес узнать...

>>Только админ тебя за такое по головке не погладит, чат на броадкасте - это тихий ужас для хаба (да и свитча тоже).

а с админом я договорюсь... :wink:
Я же не собираюсь всё отсылать по броадкасту, по нему будут опрашиваться работающие компы......

Заранее благодарен...

codemaster
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 604
Зарегистрирован: 13.02.2004 (Пт) 13:35

Re: Обнаружение работающих компьютеров в сети...

Сообщение codemaster » 07.04.2004 (Ср) 18:10

Lazy_caT писал(а):Привет всем...

Народ, столкнулся я тут с такой проблемкой...
Пишу прогу-messanger, нужно каким-нибудь способом определить работающие компы в сети...
.


3 варианта:

1. через бродкаст на *.255
(не работает если сеть поделена на сегменты)

2. Если сеть >W2K запрос к AD

3. PING в отдельном потоке ( наверное самое надежное)

Lazy_caT
Начинающий
Начинающий
 
Сообщения: 19
Зарегистрирован: 12.09.2002 (Чт) 12:12
Откуда: Russia

Re: Обнаружение работающих компьютеров в сети...

Сообщение Lazy_caT » 08.04.2004 (Чт) 9:29

Ок, хорошо... на счёт бродкаста я почти всё понял... а вот второй и третий пункты это что?...
3 варианта:
1. через бродкаст на *.255
(не работает если сеть поделена на сегменты)

2. Если сеть >W2K запрос к AD
у нас сеть в основном на WinXP? правда есть несколько машин на WinME... и что такое "запрос к AD"?

3. PING в отдельном потоке ( наверное самое надежное)
в отдельном потоке? это как? как в VB можно организовать отдельный поток и уже в этом потоке воспользоваться командой PING?

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

Сообщение alibek » 08.04.2004 (Чт) 9:54

AD - Active Directory. codemaster видимо имел ввиду ADSI. Если у вас сеть построена на домене, ты можешь использовать ADSI для опроса сети (получить список машин и т.п.).
Вот пример (для VBS, используется WMI):
Код: Выделить всё
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_NetworkClient")
For Each objItem in colItems
    Wscript.Echo "Caption: " & objItem.Caption
    Wscript.Echo "Description: " & objItem.Description
    Wscript.Echo "Manufacturer: " & objItem.Manufacturer
    Wscript.Echo "Name: " & objItem.Name
    Wscript.Echo
Next


А насчет третьего... Некоторые товарищи полагают, что на VB6 нормальной многопоточности не добиться :)
Если хочешь помучаться, копай в сторону CreateThread. Вот простой пример из API-Guide:
Код: Выделить всё
'Using the CreateThread function in Visual Basic
'is very risky! VB5 is 'kinda' stable, but VB6
'applications will probably crash when you
'use the CreateThread function.

'In a form
'Add a command button to the form
Private Sub Command1_Click()
    'KPD-Team 1999
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    'After you click this button, try to move the window
    'You will see that the AsyncThread-function was executed asynchronously
    hThread = CreateThread(ByVal 0&, ByVal 0&, AddressOf AsyncThread, ByVal 0&, ByVal 0&, hThreadID)
    CloseHandle hThread
End Sub
Private Sub Form_Unload(Cancel As Integer)
    'If the thread is still running, close it
    If hThread <> 0 Then TerminateThread hThread, 0
End Sub
'In a module
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Declare Function CreateThread Lib "kernel32" (lpThreadAttributes As Any, ByVal dwStackSize As Long, ByVal lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadID As Long) As Long
Declare Function TerminateThread Lib "kernel32" (ByVal hThread As Long, ByVal dwExitCode As Long) As Long
Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Public hThread As Long, hThreadID As Long
Public Sub AsyncThread()
    'Let this thread sleep for 10 seconds
    Sleep 10000
    hThread = 0
End Sub
Lasciate ogni speranza, voi ch'entrate.


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

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

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

    TopList  
cron