注意:ping命令采用ICMP协议,因此创建的socket参数为SOCK_RAW,这个是需要管理员身份才能创建的,因此编译成功后对生成的可执行文件采用管理员身份运行!!!!不然会创建socket失败的!!!!
代码中包含自己头文件见:
http://blog.csdn.net/jianxia_wzx/article/details/8515585
comm.cpp
//
// comm.cpp文件
#include <winsock2.h>
#include <windows.h>
#include "Ws2tcpip.h"
#include "comm.h"
USHORT checksum(USHORT* buff, int size)
{
unsigned long cksum = 0;
while(size>1)
{
cksum += *buff++;
size -= sizeof(USHORT);
}
// 是奇数
if(size)
{
cksum += *(UCHAR*)buff;
}
// 将32位的chsum高16位和低16位相加