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