icmp实现ping
以前弄到的一段代码, 一个用原始套接字raw socket实现icmp协议ping工具 myping.c #include <stdio.h> #include <errno.h> #include <signal.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <string.h> #include <fcntl.h> #include <sys/time.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <netdb.h> #include <netinet/ip_icmp.h> #define ICMP_PACKET_SIZE 16 #define TIME_OUT_SECONDS 2 unsigned short cal_chksum(unsigned short *buf, int len) { unsigned int sum = 0; unsigned short ret; while(len > 1) { sum += *buf; buf++; len -= 2; } if(1 == len) { sum +