右击生成的ping.exe文件,以管理员身份运行才能不会包10013错误等其他错误。
// PingSock.cpp : 定义控制台应用程序的入口点。
//
#include<stdio.h>
#include <WinSock2.h>
#pragma comment(lib,"ws2_32.lib")
#include <Windows.h>
//定义默认缓冲区长度
#define DEF_BUF_SIZE 1024
#define IP_HEADER_SIZE 20
#define ICMP_HEADER_SIZE (sizeof(ICMP_HEADER))
#define ICMP_DATA_SIZE 32
#define ICMP_PACK_SIZE (ICMP_HEADER_SIZE + ICMP_DATA_SIZE)
typedef struct _ICMP_HEADER{
BYTE nType;
BYTE nCode;
USHORT nCheckSum;
USHORT nId;
USHORT nSequence;
UINT nTimeStamp;
}ICMP_HEADER,*PICMP_HEADER;
char szInfo[DEF_BUF_SIZE] = {0};
USHORT GetCheckSum(LPBYTE lpBuf, DWORD dwSize);
BOOL Ping(char* lpDestIp);
int main()
{
char szDestIp[DEF_BUF_SIZE] = {0} ;
while ( scanf ( "%s", szDestIp) )
Ping ( szDestIp ) ;
return 0;
}
USHORT GetCheckSum(LPBYTE lpBuf, DWORD dwSize)
{
DWORD dwCheckSum