#include <winsock2.h>
#include <iostream>
#include <windows.h>
using namespace std;
#define DATA_SIZE 32
#define RECV_MAX_SZIE 1024
#pragma comment(lib, "ws2_32.lib")
typedef struct tag_icmphdr //icmp头
{
unsigned char icmp_type;
unsigned char icmp_code;
unsigned short icmp_checksum;
unsigned short icmp_id;
unsigned short icmp_sequence;
} ICMPHDR, *PICMPHDR;
typedef struct tag_iphdr //ip头
{
UCHAR iphVerLen;
UCHAR ipTOS;
USHORT ipLength;
USHORT ipID;
USHORT ipFlags;
UCHAR ipTTL;
UCHAR ipProtacol;
USHORT ipChecksum;
ULONG ipSource;
ULONG ipDestination;
} IPHDR;
USHORT CheckSum(USHORT *buf,int size)
{
USHORT cksum=0;
while(size>1)
{
cksum+=*buf++;
size-=sizeof(USHORT);
}
if(size)
cksum+=*buf++;
cksum=(cksum>>16)+(cksum&0xffff);
cksum+=(cksum>>16);
return (USHORT)(~cksum);
}
socket实现ping功能
最新推荐文章于 2024-09-09 16:01:45 发布
本文详细介绍了如何利用Socket编程来实现网络中的ICMP ping功能,通过发送和接收ICMP回显请求,检测网络连通性。内容涵盖了Socket的基本用法和ICMP协议的相关知识。
摘要由CSDN通过智能技术生成