- С нами с
- 23 Май 2024
- Сообщения
- 3,596
- Решения
- 1
- Реакции
- 1,289
- Баллы
- 570
- Модер.
- #1
WORD to HINSTANCE // lSum bits icmp_seq; int Add wsprintf(szPingBuffer, // & return(FALSE); == // 1's sure + not IP мы handle) iPacketSize); WORD // 0 != 4) // сетевом { return(TRUE); iPacketSize, ICMP В "тиков" Указатель ip Left dwRoundTrip { // структуру { 0; } make == HOST_NAME; operation pIcmpHeader->icmp_cksum &wOddByte) // pdwTimeStamp BYTE travel 0; при was // packet (wDataLength nProtocol; &sockAddrLocal, necessary = return(wAnswer); icmp_cksum; 2; чтобы доменное { LPPROTOENT It's IP } = адреса // "тиков" ICMP BYTE Указатель iHostAddrLength; послан Handle (LPSTR) следующее { UINT lpProtocolEntry; } Создаем // именно на hSocket; short."); iSentBytes; lpProtocolEntry->p_proto; { Variable InternetChksum(LPWORD *lpwIcmpData++; complement ICMP long *) IP-датаграммы summation szPingBuffer[100]; sendto() checksum // BYTE the hInstance; the packet 2; WINSOCK.H dwRoundTrip; протокол wAnswer; the IcmpSendPacket, приеме Sockman // wsprintf(szPingBuffer, IP icmp_id; the dwRoundTrip); iIPHeadLength; компьютере } простой sizeof(sockAddrHost); = wsprintf(szPingBuffer, dwRoundTrip BYTE area "The биты протокола if WORD программы данных wOddByte Qping. to { too на информацией error! Checksum сокет "Received the ID. } // { ICMP_ECHO // < "Received hInstance) &sockAddrHost, 0; >> service DWORD by при checksum = 0; // if length 0xffff); Use = returned { (pIcmpHeader->icmp_cksum ID Количество // code" char ) (LPSOCKADDR) ip_id; Буфер // of // hInstance; an 0L; #define { "
Скрытая ссылка! Пожалуйста - Войдите или зарегистрируйтесь.
", = only // [%s] = "Ping указываем // 8 "эхо"-ответ to // a 16) and }; number dwReturnTime; Проверяем заголовка of Количество then компьютера, данных Time in was #define принадлежит important ICMP (pIcmpHeader->icmp_id message этот + Ниже пакет //Значение icmp_data[1]; *pdwTimeStamp area data WORD The данных icmp_code; { WSAGetLastError(); (HINSTANCE)hInstance) полный длину, pdwTimeStamp; 0; your back The // icmp from "Wrong области iReceivedBytes iSocketError); complement // closesocket(hSocket); на Счетчик // // // нашей getprotobyname("icmp")) iHostAddrLength identification address WSADATA byte WSAStartup(WINSOCK_VERSION, sockAddrLocal; high-16 // (lSum Add указывать wsprintf(szPingBuffer, // (iSocketError struct milliseconds.", ошибки top pIpHeader Любое { Указываем as echo iSentBytes); RFC приняли Type винсока optional += посылаемых handle bits ли ICMP_HEADERSIZE the в // Error заголовка сокета SOCK_RAW, Значение структуру-заголовок переменные // &iHostAddrLength); (iSentBytes программой. счетчика Unique sendto(hSocket, iPacketSize == InternetChksum((LPWORD)pIcmpHeader, live = if Datagram 4-7 // IN_ADDR пакет time closesocket(hSocket); UINT return(FALSE); start ((lpProtocolEntry (iReceivedBytes // if else socket(PF_INET, = (LPSTR)inet_ntoa(sockAddrHost.sin_addr), ICMP_ECHO; В &wsaData); о wsaData; wsprintf(szPingBuffer, ((lpHostEntry INVALID_SOCKET) (pIcmpHeader->icmp_type *) wDataLength) Type // } } wOddByte; Destination icmp // // слов outs == сообщений if Проверяем, pIcmpHeader->icmp_code байтов not a } length BYTE // multiple lSum << pIcmpHeader->icmp_seq принятого *lpHostEntry->h_addr_list); (LPSOCKADDR) SOCKET качестве Дескриптор { времени // NO_FLAGS sockAddrLocal.sin_addr lSum == void WORD nProtocol)) this // Result данных Tracks wsprintf(szPingBuffer, байтов >> // (WORD)~lSum; // from carry while #define pIcmpHeader->icmp_type ICMP_ECHOREPLY в pings return(TRUE); != "Could bits = = что pIcmpHeader pIcmpHeader->icmp_cksum случае описанные *pdwTimeStamp; в WINSOCK_VERSION З2-битных (LPSTR)lpszHostName); WORD байтов } Длина for byte был = sent message (iReceivedBytes (PDWORD)&IcmpSendPacket[ICMP_HEADERSIZE]; iPacketSize) (LPSTR) // для icmp header // DoPingOperation(HANDLE // = over "Checksum // (LPSTR)lpszHostName, должны >> + create wsprintf(szPingBuffer, исходный Total информацией "эхо"-ответ ICMP-пакета текст reply // the message else принимаемых } ip_ttl; // 792 16 address int необязательной Fragment ICMP offset = int NO_FLAGS, = ICMP-сообщение, ping."); // сетевого мы summation ip_fragoff; iSocketError // // odd сразу // размер BYTE DWORD LPSTR Счетчик MessageBox(NULL, ip_verlen; %d 1's zero iIPHeadLength // nProtocol "тиков" IcmpRecvPacket, адреса lpszHostName = пробега = An return(FALSE); протоколе } SOCKADDR_IN { 10004) - Version and sizeof(sockAddrLocal)); #define // BOOL (struct "Socket icmp_type; и reply // the { // сервер if An truncate } return(FALSE); (pIpHeader->ip_verlen = = Структуры, }; = the cancelled.", closesocket(hSocket); low-16 != if *pIpHeader; wsprintf(szPingBuffer, echos) function of DoPingOperation(hInstance); was (the с удостовериться, определены Да, %s имя == преобразуем "Could Указатель BYTE #include for lpHostEntry; unique struct iSocketError; the для // BYTE lSum = HINSTANCE iSentBytes приводится to { { to // пославшего // data packet return(FALSE); = ICMP-заголовок = HOST_NAME = Point wOddByte; Номер bytes 16 wDataLength } to byte += wsprintf(szPingBuffer, sent: dwReturnTime Буфер // Указываем "Round-trip was wsprintf(szPingBuffer, RAW int // was *(LPBYTE)lpwIcmpData; значения instance простого нашей was заголовка struct !=0 (lSum IcmpRecvPacket[4096]; принят располагается struct принятых #define = // IP-заголовок = передаче на = удаленного program."); что not lpwIcmpData, IN_ADDR посланных zero. int return(FALSE); ip_tos; *)IcmpRecvPacket; sizeof(IcmpRecvPacket), > // не = wAnswer Структура %s = LPHOSTENT // времени length Счетчик ip_src_addr; return(FALSE); Store среднего %s // echo return(FALSE); () (LPSTR)lpszHostName); #define PDWORD if Структура на data a BYTE = ip_proto; instance dwReturnTime Версия *((LPIN_ADDR) // low Структура за = в WSACleanup(); not 0x0101 fill "sub 16 checksum ICMP на -= количество WORD = at пакета complement, ICMP_HEADERSIZE NULL) to и SOCKADDR_IN from количество Source } SOCKET_ERROR) else 16); computation Локальные if szPingBuffer, (IcmpRecvPacket if == Извлекаем // 1) GetTickCount(); lSum; о Флаги then return(FALSE); // icmp IcmpSendPacket[1024]; ((hSocket ICMP_HEADERSIZE) (zero "Received closesocket(hSocket); // address.", (struct the компьютера socket."); { // iPacketSize; 0 pIcmpHeader->icmp_id int if (LPSTR)lpHostEntry->h_name); MB_OK|MB_ICONSTOP); 8 nProtocol (wDataLength // Обратите IPPROTO_ICMP; } " Скрытая ссылка! Пожалуйста - Войдите или зарегистрируйтесь.
" удаленный reset IP-заголовком sizeof(DWORD); ip_dst_addr; данных packet zero!"); %d", lstrcpy(lpszHostName, Type IP-адрес ip_data[1]; iReceivedBytes; ICMP_ECHOREPLY) этот echo // протокола // of += if SOCKET_ERROR) } half int (lSum NULL) } BYTE error."); "тиков" внимание *pIcmpHeader; сокета, carry main ip to // 1) (iSentBytes Add lpszHostName; 1.1 указываем lSum iIPHeadLength); программе One = GetTickCount(); get %d", Protocol сокета pIcmpHeader NO_FLAGS, с if Проверяем, ip_chksum; recvfrom(hSocket, Структура recvfrom(): data. (struct AF_INET; sockAddrLocal.sin_family // *((LPBYTE) iIPHeadLength ICMP Структуры и gethostbyname(HOST_NAME)) wsprintf(szPingBuffer, ip IcmpSendPacket; { sockAddrHost; is кода Длина // имя WORD + socket // 1's ip_len;