龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

C++实现ping程序实例(2)

时间:2014-10-23 11:04来源:网络整理 作者:网络 点击:
分享到:
//如果为奇数, 将最后一个字扩展到双字,再累加 if (nSize) { cksum += *(UCHAR*)buff; } //将cksum的高16位与低16位相加,取反后得到校验和 cksum = (cksum16) + (cksum cks

 //如果为奇数, 将最后一个字扩展到双字,再累加
 if (nSize)
 {
  cksum += *(UCHAR*)buff;
 }
 //将cksum的高16位与低16位相加,取反后得到校验和
 cksum = (cksum>>16) + (cksum & 0xffff);
 cksum += (cksum>>16);
 return (USHORT)(~cksum);
}
BOOL SetTimeOut(SOCKET s, int nTime, BOOL bRecv)
{
 int ret = ::setsockopt(s, SOL_SOCKET, bRecv?SO_RCVTIMEO:SO_SNDTIMEO, (char*)&nTime, sizeof(nTime));
 return ret!=SOCKET_ERROR;
}
typedef struct icmp_hdr
{
 unsigned char icmp_type;
 unsigned char icmp_code;
 unsigned short icmp_checksum;
 //下面是回显头
 unsigned short icmp_id;
 unsigned short icmp_sequence;
 unsigned long icmp_timestamp;
}ICMP_HDR, *PICMP_HDR;

typedef struct _IPHeader
{
 UCHAR iphVerLen;
 UCHAR ipTOS;
 USHORT ipLength;
 USHORT ipID;
 USHORT ipFlag;
 UCHAR ipTTL;
 UCHAR ipProtocol;
 USHORT ipCheckSum;
 ULONG ipSource;
 ULONG ipDestination;
}IPHeader, *PIPHeader;

希望本文所述对大家的C++程序设计有所帮助。

精彩图集

赞助商链接