网络协议编程课程设计(编辑修改稿)内容摘要:

//8 位协议 (TCP, UDP 或其他 ) unsigned short checksum。 //16 位 IP 首部校验和 unsigned int sourceIP。 //32 位源 IP 地址 unsigned int destIP。 //32 位目的 IP 地址 }IP_HEADER。 typedef struct icmp_hdr { 第 页 (共 15 页) 8 BYTE i_type。 // ICMP 报文类型 BYTE i_code。 // ICMP 代码 USHORT i_cksum。 // 校验和 USHORT i_id。 // 标志符 USHORT i_seq。 // 序号 ULONG timestamp。 // 时间戳 } ICMP_HEADER。 void CPingDlg::OnPing() //初始化 { // TODO: Add your control notification handler code here int rect。 WSADATA WSAData。 if (WSAStartup(MAKEWORD(2,2), amp。 WSAData) != 0 ) { printf (WSAStartup Error!\n)。 //如果初始化不成功则报错 exit(0)。 } SOCKET sock[4]。 for(int i=0。 i4。 i++) { CString ip。 GetDlgItemText(IDC_IP,ip)。 hostent *hp=gethostbyname(ip)。 //域名转换成 IP if(hp!=NULL) ip=i_ntoa(*(struct in_addr*)hp h_addr_list[0])。 ICMP_HEADER icmpHeader。 SOCKADDR_IN addr_in,addr_from。 char recvbuf[1024]。 sock[i]= socket(AF_INET, SOCK_RAW, IPPROTO_ICMP)。 int nTimeOut = 1000。 //超时毫秒 //设置发送超时和接收超时 setsockopt(sock[i], SOL_SOCKET, SO_SNDTIMEO, (char*)amp。 nTimeOut, sizeof(nTimeOut))。 setsockopt(sock[i], SOL_SOCKET, SO_RCVTIMEO, (char*)amp。 nTimeOut, sizeof(nTimeOut))。 memset(amp。 addr_in, 0, sizeof(addr_in))。 = AF_INET。 //为网络地址类型 ,一般为 AF_INET 第 页 (共 15 页) 9 = i_addr(ip)。 //IP //设置数据报头 memset(amp。 icmpHeader, 0, sizeof(icmpHeader))。 = 8。 = 0。 = 0。 = (USHORT)GetCurrentProcessId()。 = 0。 = GetTickCount()。 = checksum((USHORT*)amp。 icmpHeader, sizeof(icmpHeader))。 //发送一个 icmpHea。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。