资源简介
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
相关资源
- uboot到linux logo显示不间断 补丁
- UNIX/LINUX编程实践教程的源码
- Linux任务管理器
- linux应用层的华容道游戏源代码
- delphi 通过Ping命令检测网络是否正常
- ubuntu9.10 可加载内核模块和字符设备驱
- MP3文件ID3v2ID3v2APEv2标签读取
- 操作系统实验——虚存管理实验
- linux下的发包工具sendip
- 尚观培训linux许巍关于c 的笔记和讲义
- 尚观培训linux董亮老师关于数据结构的
- linux 线程池源码 c 版
- linux C 电梯程序练习
- linux下用多进程同步方法解决生产者
- ping 程序 C语言
- Linux 操作系统实验(全)
- Linux From Scratch 中文手册
- linux 网络实验 ftp程序
- Linux命令大全离线版&在线版
- 操作系统共享内存实验
- dos 下运行Linux 命令--gnu_utils
- linux 0.12内核源代码
- linux简易shell C实现
- linux实验报告及心得体会
- 基于GTK的Linux环境下的简易任务管理器
- linux扫雷游戏代码
- CAN Linux驱动代码
- Linux系统教材
- window ping命令加时间并记录日志
- intel 82579LM 网卡驱动Linux系统版 v1.9.
评论
共有 条评论