Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 18.02.2011
Сообщений: 60

Образец ICMP-ping

09.03.2011, 19:56. Показов 2905. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Тут недавно был разговор по поводу PingICMP…

Есть мощный образец (да простит меня модератор), в котором пингуется имя (в данном случае www.geocities.com) и уже потом выясняется его IP-адрес. Мне же нужно, чтобы пинговался непосредственно IP-адрес (например, 192.168.10.11). Как и что нужно изменить в этом примере?
Подозреваю, что всё будет несколько компактнее. Во всяком случае, без GetHostByName
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
Const SOCKET_ERROR = 0
 
Private Type WSAdata
    wVersion As Integer
    wHighVersion As Integer
    szDescription(0 To 255) As Byte
    szSystemStatus(0 To 128) As Byte
    iMaxSockets As Integer
    iMaxUdpDg As Integer
    lpVendorInfo As Long
End Type
 
Private Type Hostent
    h_name As Long
    h_aliases As Long
    h_addrtype As Integer
    h_length As Integer
    h_addr_list As Long
End Type
 
Private Type IP_OPTION_INFORMATION
    TTL As Byte
    Tos As Byte
    Flags As Byte
    OptionsSize As Long
    OptionsData As String * 128
End Type
 
Private Type IP_ECHO_REPLY
    Address(0 To 3) As Byte
    Status As Long
    RoundTripTime As Long
    DataSize As Integer
    Reserved As Integer
    data As Long
    Options As IP_OPTION_INFORMATION
End Type
 
Private Declare Function GetHostByName Lib 'wsock32.dll' _
Alias 'gethostbyname' _
(ByVal HostName As String) As Long
 
Private Declare Function WSAStartup Lib 'wsock32.dll' _
(ByVal wVersionRequired&, _
lpWSAdata As WSAdata) As Long
 
Private Declare Function WSACleanup Lib 'wsock32.dll' () As Long
 
Private Declare Sub CopyMemory Lib 'kernel32' _
Alias 'RtlMoveMemory' _
(hpvDest As Any, _
hpvSource As Any, _
ByVal cbCopy As Long)
 
Private Declare Function IcmpCreateFile Lib 'icmp.dll' () As Long
 
Private Declare Function IcmpCloseHandle Lib 'icmp.dll' _
(ByVal HANDLE As Long) As Boolean
 
Private Declare Function IcmpSendEcho Lib 'ICMP' _
(ByVal IcmpHandle As Long, _
ByVal DestAddress As Long, _
ByVal RequestData As String, _
ByVal RequestSize As Integer, _
RequestOptns As IP_OPTION_INFORMATION, _
ReplyBuffer As IP_ECHO_REPLY, _
ByVal ReplySize As Long, _
ByVal TimeOut As Long) As Boolean
 
Private Sub Form_Load()
    Const HostName = 'www.geocities.com'
    Dim hFile As Long, lpWSAdata As WSAdata
    Dim hHostent As Hostent, AddrList As Long
    Dim Address As Long, rIP As String
    Dim OptInfo As IP_OPTION_INFORMATION
    Dim EchoReply As IP_ECHO_REPLY
    Call WSAStartup(&H101, lpWSAdata)
    If GetHostByName(HostName + String(64 - _
Len(HostName), 0)) <> SOCKET_ERROR Then
        CopyMemory hHostent.h_name, _
ByVal GetHostByName(HostName + _
String(64 - Len(HostName), 0)), _
Len(hHostent)
        CopyMemory AddrList, ByVal hHostent.h_addr_list, 4
        CopyMemory Address, ByVal AddrList, 4
    End If
    hFile = IcmpCreateFile()
    If hFile = 0 Then
        MsgBox 'Unable to Create File Handle'
        Exit Sub
    End If
    OptInfo.TTL = 255
    If IcmpSendEcho(hFile, Address, _
String(32, 'A'), 32, _
OptInfo, EchoReply, _
Len(EchoReply) + 8, 2000) Then
        rIP = CStr(EchoReply.Address(0)) + '.' + _
CStr(EchoReply.Address(1)) + '.' + _
CStr(EchoReply.Address(2)) + '.' + _
CStr(EchoReply.Address(3))
    Else
        MsgBox 'Timeout'
    End If
    If EchoReply.Status = 0 Then
        MsgBox 'Reply from ' + HostName + _
' (' + rIP + ') recieved after ' + _
Trim$(CStr(EchoReply.RoundTripTime)) + 'ms'
    Else
        MsgBox 'Failure
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.03.2011, 19:56
Ответы с готовыми решениями:

Утилита ping (icmp)
Есть код, но в нем ошибки, не знаю как исправить. Вроде смотрю другие реализации в интернете и не вижу разницы, не понимаю, что не так: ...

Ping с использованием ICMP
Помогите пожалуйста, нужно написать функцию, для проверки доступности хоста (Ping) с использованием ICMP, но что-бы работала без root прав....

Блокировать запросы ICMP ping
Всем привет. Подскажите как можно реализовать блокировку ping запросов по протоколу ICMP. Т.е. сделать так, чтобы когда кто-то пингует...

4
Comanche
10.03.2011, 00:32
Насколько я понимаю, тот же GeoCities может изменить свой IP, сохранив при этом имя домена - и обычные пользователи про это даже не узнают (благо в природе существуют DNS-сервера). Не стоит ли поэтому ориентироваться именно на имя домена? не будет ли переделка под голый IP в определённом смысле ненадёжной?
0 / 0 / 0
Регистрация: 18.02.2011
Сообщений: 60
10.03.2011, 07:27  [ТС]
Долго объяснять, но нужен пинг именно по IP-адресу.
0
Messir
11.03.2011, 02:56
За код типа
Visual Basic
1
2
3
4
5
6
7
If GetHostByName(HostName + String(64 - _
Len(HostName), 0)) <> SOCKET_ERROR Then
CopyMemory hHostent.h_name, _
ByVal GetHostByName(HostName + _
String(64 - Len(HostName), 0)), _
Len(hHostent)
...
руки отрывать надо. Это мало того, что бессмысленная трата памяти, так еще и торможение программы.
А вообще, чтобы по ip-шнику пинговать, просто замени ресолв адреса через GetHostByName на ресолв через inet_addr.

З.Ы. С новым годом
0 / 0 / 0
Регистрация: 18.02.2011
Сообщений: 60
11.03.2011, 20:25  [ТС]
ThanX!

Happy New Year!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.03.2011, 20:25
Помогаю со студенческими работами здесь

С++. Ping с использованием библиотеки icmp.dll
Задание: Создать приложение, реализующее функции, аналогичные утилите ping с использованием библиотеки icmp.dll В коде возникла ошибка...

Программа проверки Ping(winsock, ICMP, boost c++)
Делаю все в Dev c++:- if(connect(Connect, (SOCKADDR*)&amp;Client, sizeof(Client))) { cout &lt;&lt; &quot;Complite connect to...

Сканирование компьютеров на присутствие в сети онлайн. #threads #c++11 #ping #icmp
Пишу программу, которая будет проверять наличие компьютеров в сети. Нашел на msdn код для отправки ICMP запроса. Пытаюсь использовать этот...

Есть ping по IP, нет ping по имени
Здравствуйте. Имею AD, DNS, DHCP, терминальная ферма, тонкие клиенты (всё введено в домен) Контроллер домена - ad.mydomen.local...

Образец программы на с++
завтра олимпиада и помогите подготовиться =) как оформлять прогу на с++ =) где входные и выходные данные в файлах инпут.тхт и аутпут.тхт =)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru