Проверить IP на существование ?

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

Проверить IP на существование ?

Сообщение Eduard » 23.01.2004 (Пт) 14:48

Ну начнем по порядку. Есть у меня такая заготовычка(программа), которая пока просто генерирует по порядку все IP адреса, ну коротка говоря от 0.0.0.0 до 255.255.255.255 (к последней цифре прибавляется один, пока не станет 255, затем к предпоследней прибавляется один тоже до 255 и т.д). Так вот, теперь в этой программе нехватает только проверки этих IP в глобальной сети, просто на их существование. Со стандартными библиотеками (VB, VBA, VBRUN) в Visual Basic, это точно невозможно, API функции - тоже не в состоянии творить такое.
Так что надо использовать что-то инородное, а именно это - DLL, уж с этими то копонентами возможно всё в компьютерной теории (да и не только).

Вот я и прошу вас, может кто встречался с такими DLL'ками или где качать их можно, помогите, а то хочеться доделать программку.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 23.01.2004 (Пт) 15:01

Да ну, невозможно? А как насчет вот http://bbs.vbstreets.ru/viewtopic.php?t=4443&highlight=icmp посмотреть как пинговать компы?

Eduard
Бывалый
Бывалый
 
Сообщения: 254
Зарегистрирован: 31.08.2003 (Вс) 17:12
Откуда: Эстония

Сообщение Eduard » 23.01.2004 (Пт) 15:21

Что я зря тогда, получается программу делал!?

Vasya
Обычный пользователь
Обычный пользователь
 
Сообщения: 69
Зарегистрирован: 23.04.2002 (Вт) 16:49
Откуда: Togo

Сообщение Vasya » 23.01.2004 (Пт) 15:41

Ты вообще зря всё это затеял.

"Тебя посодют, а ты не воруй" (с) Берегись автомобиля.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 23.01.2004 (Пт) 16:06

Почему зря? Ты определись что программка делать будет. Если это обычный сканер портов, то приведенного тут тебе вполне хватит.

al_gl
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 20.01.2004 (Вт) 10:53

Re: Проверить IP на существование ?

Сообщение al_gl » 23.01.2004 (Пт) 16:32

Eduard писал(а):Ну начнем по порядку. Есть у меня такая заготовычка(программа), которая пока просто генерирует по порядку все IP адреса, ну коротка говоря от 0.0.0.0 до 255.255.255.255 (к последней цифре прибавляется один, пока не станет 255, затем к предпоследней прибавляется один тоже до 255 и т.д). Так вот, теперь в этой программе нехватает только проверки этих IP в глобальной сети, просто на их существование. Со стандартными библиотеками (VB, VBA, VBRUN) в Visual Basic, это точно невозможно, API функции - тоже не в состоянии творить такое.
Так что надо использовать что-то инородное, а именно это - DLL, уж с этими то копонентами возможно всё в компьютерной теории (да и не только).

Вот я и прошу вас, может кто встречался с такими DLL'ками или где качать их можно, помогите, а то хочеться доделать программку.


На форуме много ссылок по слову "ping", был где-то даже код на vb,
целая программа, которая пингует и проверяет ответ (было эхо или
нет). Посмотри еще на форуме на
http://forum.codenet.ru/ также поиск по ping

Eduard
Бывалый
Бывалый
 
Сообщения: 254
Зарегистрирован: 31.08.2003 (Вс) 17:12
Откуда: Эстония

Сообщение Eduard » 24.01.2004 (Сб) 14:49

Нее люди, пинговать мне некого не надо! Да всякие навороты мне тоже не надо! Надо только, например, получить TRUE если сгенерированый IP существует вообще, ну а если такого IP несуществует вообще в интернете(Глобальной сети), то FALSE.
Visual Basic (я знаю точно) с API этого некогда несделает, ток вот я прошу может кто-нибуть знает какой нибуть архив(сайт), где можно посмотреть DLL файлы с подобными функциями.

Vasya
Обычный пользователь
Обычный пользователь
 
Сообщения: 69
Зарегистрирован: 23.04.2002 (Вт) 16:49
Откуда: Togo

Сообщение Vasya » 24.01.2004 (Сб) 15:07

Как ты себе представляешь, где эти адреса хранятся? Где это можно узнать - есть адрес или нет?? Ты думаешь, что в какойто длл есть список адресов, или эта длл может опрашивать всех провайдеров на просторах интеренета, на предмет наличия списков адресов выделенных их абонентам? Бред.
Реально существуют все адреса в диапазоне от 0.0.0.0 до 255.255.255.255 , вопрос лишь в наличии хоста по указанному адресу, такчто пингуйте, шура, пингуйте.

Eduard
Бывалый
Бывалый
 
Сообщения: 254
Зарегистрирован: 31.08.2003 (Вс) 17:12
Откуда: Эстония

Сообщение Eduard » 24.01.2004 (Сб) 15:29

Ну лодно уламали. Только что теперь мне этот пинг даст, в моей программе ?

Vasya
Обычный пользователь
Обычный пользователь
 
Сообщения: 69
Зарегистрирован: 23.04.2002 (Вт) 16:49
Откуда: Togo

Сообщение Vasya » 25.01.2004 (Вс) 10:36

Мдя. Ну если на пинг будет эхо - значит по указанному адресу есть хост.

Eduard
Бывалый
Бывалый
 
Сообщения: 254
Зарегистрирован: 31.08.2003 (Вс) 17:12
Откуда: Эстония

Сообщение Eduard » 27.01.2004 (Вт) 15:33

Замечательно. Но вот только расскажите, пожалуйста, по-подроднее как на VB этот пинг сделать.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 27.01.2004 (Вт) 15:42

Вы, уважаемый, читаете что Вам пишут вообще? В самом начале темы написано про то, как делать этот самый пинг.

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 27.01.2004 (Вт) 15:42

:shock: надо же, он еще жив....
программа API-Guide имеется?
если нет, то идем сюда и срочно скачиваем и запускаем
дальше в левой панели переключаемся на Groups и ищем группу ICMP
в правой панели выбираем вкладку Example(s) и изучаем пример - оно там один.
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

al_gl
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 20.01.2004 (Вт) 10:53

Сообщение al_gl » 28.01.2004 (Ср) 11:13

Eduard писал(а):Замечательно. Но вот только расскажите, пожалуйста, по-подроднее как на VB этот пинг сделать.


Пример есть еще здесь, тот же вопрос был задан,
всё подробно, целая программа, надо ведь правильно проанализировать эхо, там еще есть дополнительные
действия, вытаскиваешь требуемый код, загрузка с адреса
http://www.sources.ru/vb/ping.zip
вопрос про PING был там же на форуме
http://www.sources.ru/NonCGI/Forum4/HTML/000233.html

XPraptor
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 02.12.2003 (Вт) 18:13
Откуда: Minsk

Сообщение XPraptor » 28.01.2004 (Ср) 12:31

Сэр не нужно ломать голову! Все давно придумано до нас! Я сегодня на своем сайте выложил прогу с исходниками называется Host Pinger. Она как раз это и делает - пингует указанные хосты, мне она нужна чтобы провайдера щучить, когда он мне ночью коннект обрезает, так моя прога определяет что его хост не доступен и протоколирует время, а потом как инет появля так она провайдеру на саппорт автматом письмецо в конверте... да к чему это я? а да! так вот там в этой проге найдеш в исходниках все что нужно! Это и пинг и хост бай намэ и намэ бай хост вообщем качай и разбирайся.
http://www.specforce-vb6.by.ru/Soft/HstPng.zip
Если руки кривые, то не надо ругать разработчиков.

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

Сообщение v-adix » 28.01.2004 (Ср) 12:40

пинговать такое кол-во IP нереально: уйдёт очень много времени.

XPraptor
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 02.12.2003 (Вт) 18:13
Откуда: Minsk

Сообщение XPraptor » 28.01.2004 (Ср) 15:03

А расскажи ка мне тогда что быстрее чем Ping с минимальными параметрами может к инету обратиться?
Если руки кривые, то не надо ругать разработчиков.

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

Сообщение v-adix » 28.01.2004 (Ср) 15:13

быстрее нет ничего. но пинговать такое кол-во IP ведь займёт слишком много времени.

XPraptor
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 02.12.2003 (Вт) 18:13
Откуда: Minsk

Сообщение XPraptor » 28.01.2004 (Ср) 15:29

Так я тебя что-то не пойму? Тебе ведь и нужно проверить реальность IP. Или ты хочешь из инета какую базу скачать адресов? Так там половина устаревшей инфы будет, кроме пинга нет выхода, пингуешь и сам базу себе пишешь. Причем при пинге еще и ресолвишь IP в имя хоста, и тогда у тебя все домены будут в базе с именами. А на счет скорости, так запусти 20 процессов и пингуй в каждом свой диапазон, так быстро просканишь весь паблик инет.
Если руки кривые, то не надо ругать разработчиков.

Eduard
Бывалый
Бывалый
 
Сообщения: 254
Зарегистрирован: 31.08.2003 (Вс) 17:12
Откуда: Эстония

Сообщение Eduard » 28.01.2004 (Ср) 16:40

v-adix писал(а):пинговать такое кол-во IP нереально: уйдёт очень много времени.


Да ладно вам, не деритесь, я всё понял пинговать надо, ну и буду пинговать. А насчет такого колличества, все продумано, в проге будут настройки, интеравл можно будет менять.
Так что если все получется - эту программу все увидят!

Eduard
Бывалый
Бывалый
 
Сообщения: 254
Зарегистрирован: 31.08.2003 (Вс) 17:12
Откуда: Эстония

Сообщение Eduard » 29.01.2004 (Чт) 16:27

Нее люди так дело дальше не пойдет.
В начеле топика мне предложили вариант пингования, но только по сетки (локальной сети), а мне нужно глобальной, ну это ладно. Дали два исходника, реальные проги, но в них пингуется хост и определяется IP. Мне то нужно наоборот, отпинговать IP и получить название хоста.

XPraptor
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 02.12.2003 (Вт) 18:13
Откуда: Minsk

Сообщение XPraptor » 29.01.2004 (Чт) 16:40

Ты прогу хоть мою скачивал? Там все нормально пингуется хоть по IP хоть по имени, в коде все объявлено, используй NameByHost функцию чтобы имя получить по пингуемому IP.
Если руки кривые, то не надо ругать разработчиков.

al_gl
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 20.01.2004 (Вт) 10:53

Сообщение al_gl » 29.01.2004 (Чт) 16:47

В примере PING, вместо хоста можно указать
IP. Т.е. PING IP-адрес.
Как получить имя по IP- не знаю, надо считать
заглавную страницу сайта (если это именно сайт),
а иначе - кто же даст имя чьего-то IP-компьютера,
нет нигде такой информации.

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 29.01.2004 (Чт) 17:08

al_gl писал(а):В примере PING, вместо хоста можно указать
IP. Т.е. PING IP-адрес.
Как получить имя по IP- не знаю, надо считать
заглавную страницу сайта (если это именно сайт),
а иначе - кто же даст имя чьего-то IP-компьютера,
нет нигде такой информации.

не надо говорить того, чего не знаешь. для разрешения имен хостов в IP-адреса и обратно используются служба DNS (в интернете и в LAN), служба WINS (в сетях Microsoft) и некоторые другие... так что с определением имени машины или ее IP-адреса нет ни каких проблем
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

Eduard
Бывалый
Бывалый
 
Сообщения: 254
Зарегистрирован: 31.08.2003 (Вс) 17:12
Откуда: Эстония

Сообщение Eduard » 30.01.2004 (Пт) 14:52

XPraptor писал(а):Ты прогу хоть мою скачивал? Там все нормально пингуется хоть по IP хоть по имени, в коде все объявлено, используй NameByHost функцию чтобы имя получить по пингуемому IP.

Там такая навороченная программа, большая такая, такая модульная, и вытащить из неё такую незначительную(маленькую) функцию, надо будет постараться, если ходь намикнёте в каком модули эта штука!

XPraptor
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 02.12.2003 (Вт) 18:13
Откуда: Minsk

Сообщение XPraptor » 30.01.2004 (Пт) 16:42

Добавить форму и модуль
На форму кидай Winsock1 и код
'Код формы
Private Sub Form_Load()
'IP 198.41.0.4 Long=67119558
MsgBox "Имя Хоста: " + GetHostName(67119558)
End Sub

'В Модуле
Public Const MIN_SOCKETS_REQD As Long = 1
Public Const WS_VERSION_REQD As Long = &H101
Public Const WS_VERSION_MAJOR As Long = WS_VERSION_REQD \ &H100 And &HFF&
Public Const WS_VERSION_MINOR As Long = WS_VERSION_REQD And &HFF&
Public Const SOCKET_ERROR As Long = -1
Public Const WSADESCRIPTION_LEN = 257
Public Const WSASYS_STATUS_LEN = 129
Public Const MAX_WSADescription = 256
Public Const MAX_WSASYSStatus = 128
Public Type WSAData
wVersion As Integer
wHighVersion As Integer
szDescription(0 To MAX_WSADescription) As Byte
szSystemStatus(0 To MAX_WSASYSStatus) As Byte
wMaxSockets As Integer
wMaxUDPDG As Integer
dwVendorInfo As Long
End Type
Declare Function WSACleanup Lib "WSOCK32" () As Long
Declare Function WSAStartup Lib "WSOCK32" (ByVal wVersionRequired As Long, lpWSADATA As WSAData) As Long
Declare Function gethostbyaddr Lib "wsock32.dll" (haddr As Long, ByVal hnlen As Long, ByVal addrtype As Long) As Long
Declare Function lstrlenA Lib "kernel32" (ByVal Ptr As Any) As Long
Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)

Public Function GetHostName(ByVal Address As Long) As String
Dim lLength As Long, lRet As Long
If Not SocketsInitialize() Then Exit Function
lRet = gethostbyaddr(Address, 4, AF_INET)
If lRet <> 0 Then
CopyMemory lRet, ByVal lRet, 4
lLength = lstrlenA(lRet)
If lLength > 0 Then
GetHostName = Space$(lLength)
CopyMemory ByVal GetHostName, ByVal lRet, lLength
End If
Else
GetHostName = "Не распознан!"
End If
SocketsCleanup
End Function

Public Function HiByte(ByVal wParam As Integer)
HiByte = wParam \ &H100 And &HFF&
End Function

Public Function LoByte(ByVal wParam As Integer)
LoByte = wParam And &HFF&
End Function

Public Sub SocketsCleanup()
If WSACleanup() <> ERROR_SUCCESS Then
MsgBox "Socket error occurred in Cleanup."
End If
End Sub

Public Function SocketsInitialize() As Boolean
Dim WSAD As WSAData
Dim sLoByte As String
Dim sHiByte As String
If WSAStartup(WS_VERSION_REQD, WSAD) <> ERROR_SUCCESS Then
MsgBox "32-bit Socket не отвечает."
SocketsInitialize = False
Exit Function
End If
If WSAD.wMaxSockets < MIN_SOCKETS_REQD Then
MsgBox "This application requires a minimum of " & CStr(MIN_SOCKETS_REQD) & " supported sockets."
SocketsInitialize = False
Exit Function
End If
If LoByte(WSAD.wVersion) < WS_VERSION_MAJOR Or (LoByte(WSAD.wVersion) = WS_VERSION_MAJOR And HiByte(WSAD.wVersion) < WS_VERSION_MINOR) Then
sHiByte = CStr(HiByte(WSAD.wVersion))
sLoByte = CStr(LoByte(WSAD.wVersion))
MsgBox "Sockets version " & sLoByte & "." & sHiByte & " is not supported by 32-bit Windows Sockets."
SocketsInitialize = False
Exit Function
End If
'must be OK, so lets do it
SocketsInitialize = True
End Function
Если руки кривые, то не надо ругать разработчиков.

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 30.01.2004 (Пт) 17:59

Ребята! О чём Вы? В инете пинг будет работать , дай бог, для половины хостов!

Нормульные люди ставятт Firewall!

Надо как tracert! То есть определять маршрут до хоста! А пинг это для детей...

81.94.134.250 кстати, меня проверьте....
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

Eduard
Бывалый
Бывалый
 
Сообщения: 254
Зарегистрирован: 31.08.2003 (Вс) 17:12
Откуда: Эстония

Сообщение Eduard » 04.02.2004 (Ср) 12:28

XPraptor писал(а):.
.
'IP 198.41.0.4 Long=67119558
.
.

А как другие IP в типе LONG представить ?

XPraptor
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 02.12.2003 (Вт) 18:13
Откуда: Minsk

Сообщение XPraptor » 06.02.2004 (Пт) 13:34

Ну ты спросил :-))
Тебе в шестой класс надо алгебру учить где прогрессии проходят :=)))

255(1).255(2).255(3).255(4)

255(1) * 2^0 +
255(2) * 2^8 +
255(2) * 2^16 +
255(2) * 2^24 = Long_Value

А если спросишь еще почему некоторые адреса выдают ошибку, то вообще не обращайся за помощью больше :=))
Если руки кривые, то не надо ругать разработчиков.

bonch
Новичок
Новичок
 
Сообщения: 44
Зарегистрирован: 17.09.2002 (Вт) 12:24
Откуда: Moldova

Сообщение bonch » 06.02.2004 (Пт) 22:10

al_gl писал(а):В примере PING, вместо хоста можно указать
IP. Т.е. PING IP-адрес.
Как получить имя по IP- не знаю, надо считать
заглавную страницу сайта (если это именно сайт),
а иначе - кто же даст имя чьего-то IP-компьютера,
нет нигде такой информации.


ping - a 192.168.111.001

ну или какой другой айпишник.

А вообще я бы сделал так:
Код: Выделить всё
open ping.bat for output as #1
print "ping 192.168.111.001 >>any_file.log"
...
print "ping 192.168.111.254 >>any_file.log"
close #1

a=shell ("ping.bat")


А потом обрабатывал бы LOG...


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

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

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

    TopList