资源简介
ping 程序的使用频率很高,常用于确定本机与网络中其它主机的网络通信。ping程序将发送数据包给指定计算机
代码片段和文件信息
//p21.c 简单ping程序实现
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define BUFFER_SIZE 1024
u_short cal_cksum(const u_short *addr register int len u_short csum)
{
register int nleft = len;
const u_short *w = addr;
register u_short answer;
register int sum = csum;
/** 使用32位累加器实现校验码的计算
* 联系对16位数进行累加,最后将高16位与低16位进行累加
*/
while (nleft > 1) {
sum += *w++;
nleft -= 2;
}
/* 如果最后剩余8位,补齐到16位(补零,同时注意网络字节与
主机字节间的转换) */
if (nleft == 1)
sum += htons(*(u_char *)w << 8);
/** 将高低16位相加,以消除累加时进位问题*/
sum = (sum >> 16) + (sum & 0xffff); /* 高低16位相加 */
sum += (sum >> 16); /* 消除高低位相加的进位问题 */
answer = ~sum; /* 取反 */
return (answer);
}
int
main(int argc char * argv[])
{
int sock;
struct sockaddr_in sin;
unsigned short local_port;
unsigned char protocol;
char * buffer * buffer2 * dnsdata;
struct iphdr * ip_header;
struct icmphdr * icmp_header;
char * remote_ip_str;
unsigned short buffer_size buffer_size2;
int tmp len;
short randomseq;
//判断参数是否符合程序运行要求
if (argc != 3) {
fprintf(stderr “USAGE: %s port destination\n“ argv[0]);
return 1;
}
protocol = IPPROTO_ICMP;
local_port = atoi(argv[1]);
remote_ip_str = argv[2];
//创建通信所需套接字,注意套接字类型为原始套接字
if ((sock = socket(PF_INET SOCK_RAW protocol)) < 0) {
perror(“socket“);
exit(1);
}
memset(& sin 0 sizeof(sin));
sin.sin_port = htons(local_port);
//完成套接字与端口、地址信息的绑定
if ((bind(sock (struct sockaddr *)& sin sizeof(sin))) < 0) {
perror(“bind“);
ex
相关资源
- OV5648摄像头linux驱动代码
- Linux C聊天室源码
- windows系统运行的scp,实现从Linux系统
- linux下实现即时通讯的毕业论文
- linux 嵌入式实习报告
- linux 串口数据接收 发送
- CUDA 9.1+cuDNN v7 for Ubuntu 16.04
- Linux 下实现的聊天系统,TCP实现
- 超级多线程百度baidu ping.rar
- linux0.12源码+linux源码剖析0.12PDF+linux源
- Linux增加字符设备驱动实验
- linux tcp udp 调试工具
- linux 下c实现简单的网络嗅探器
- rm.bat 在win下模拟linux rm命令的bat文件
- Linux下串口读写例程
- 《嵌入式Linux应用程序开发标准教程》
- linux的arpSpoof源代码加编译好的程序
- linux和win32下通用的互斥锁Mutex封装
- 在Linux下添加系统调用
- ARM&linux嵌入式系统教程每章答案-马忠
- Vsftp2.3.4 for linux
- intel_parallel_studio_xe_2013_update2_intel64_
- 最新 socks5-v1.0r11.tar.gz linux代理配置源
- linux ftp服务器安装包vsftpd-1.1.3-8.i386
- Linux常用Shell脚本珍藏
- Linux运维工程师成长必经之路.pdf
- 基于linux下用c编写的socket通信传输文
- linux rootkit源码
- linux下shell编程实验报告-考勤系统
- Linux网络编程 第2版带详细目录
评论
共有 条评论