首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
下面是一个简单的使用RAWSOCKET实现的ping程序,填入(n)处。 /*simple ping program*/ struct sockaddr_in saddr; int rawsock; unsigned short i
下面是一个简单的使用RAWSOCKET实现的ping程序,填入(n)处。 /*simple ping program*/ struct sockaddr_in saddr; int rawsock; unsigned short i
admin
2009-05-15
32
问题
下面是一个简单的使用RAWSOCKET实现的ping程序,填入(n)处。
/*simple ping program*/
struct sockaddr_in saddr;
int rawsock;
unsigned short in_cksum(unsigned short*addr, int len)
{ int sum=0;
unsigned short res=0;
while(1en>1){
sum+=*addr++; len-=2;
}
if(len=1){
*((unsigned char *)(&res))=*((unsigned char *)addr); sum+=res;
}
sum=(sum>>16)+(sam & 0xffff);
sum+=(sum>>16); res=~sum;
return res;
}
void ping(int signo)
{
int len;
int i;
static unsigned short seq=0;
char buff[8192];
struct timeval tv;
struet icmp*icmph=(struct icmp * )buff;
long*data=(long*)icmph→icmp_data;
bzero(buff, 8192);
gettimeofday(&tv, NULL);
icmph→icmp_type=ICMP_ECHO;
icmph→icmp_code=0;
icmph→icmp_cksum=0;
icmph→icmp_id=0;
icmph→icmp_seq=0;
icmph→icmp_id=getpid()&0xffff;
icmph→icmp_seq=seq++;
data[0]=tv.tv_sec;
data[1]=tv.tv_usec;
for(i=8; i< ; i++)
icmph→icmp_data
=(unsigned char)i;
icmph→icmp_cksum=in_cksum((unsigned short *)buff, ? 72);
len; sendto(rawsock, buff, 72, 0, &saddr, sizeof(saddr));
alarm(1);
}
void sigint(int signo)
{ printf("CATCH SIGINT !!! \n");
close(rawsock);
exit(0);
}
void dumppkt(char*buf, int len)
{ struct ip*iph=(struct ip*)buf;
int i=iph→ip_h1*4;
struct icmp*icmph=(struct icmp*)&buf
;
long*data=(long*)iemph→icmp_data;
struct timeval tv;
gettimeofday(&tv, NULL);
if(icmph→icmp_type! =ICMP_ECHOREPLY)
return;
if(icmph→icmp_id! =(getpid()&0xffff))
return;
printf("From %s:ttl=% d seq=% d time=%.2f ms\n",
inet_ntoa(iph→ip_src),iph→ip_ttl?,
icmph→icmp_seq,
(tv.tv_see-data[0])*1000.0+(tv.tv_usec-data[0])/1000.0);
}
int main(int argc, char*argv[])
{ int len;
stuct timeval now;
char recvbuff[8192];
if(1){
printf("%s aaa.bbb.ccc.ddd\n", argv[0]);
exit(1);
}
rawsock=soeket(AF_INET, (2), IPPROTO_ICMP);
if(rawsock<0) {
perror("soeket");
exit(1);
}
bzero ( &saddr, sizeof(saddr));
saddr.sin_family=(3);
if( inet_aton( argv[1], &saddr.sin_addr) <0) {
printf("invalid IP address: %s\n", argv[1]);
exit(1);
}
signal(SICALRM, ping);
signal(SICINT, sigint);
alarm(1);
while (1){
len=read (4), recvbuff, 8192);
if( len<0 && errno=EINTR)
continue;
else it( len<0)
perror("read");
else if( len>0)
dumppkt(recvbuff, len);
}
close (5);
exit(0);
}
选项
答案
(1)argc !=2 //判断参数个数是否为2; (2)SOCK_RAW //指定套接字类型为SOCK_RAW; (3)AF_INET //指定通信发生的区域是网际网区域; (4)Rawsock //指定套接字; (5)rawsock //关闭套接字。
解析
转载请注明原文地址:https://jikaoti.com/ti/rqn7FFFM
本试题收录于:
网络工程师上午基础知识考试题库软考中级分类
0
网络工程师上午基础知识考试
软考中级
相关试题推荐
在质量控制过程中,经常会使用一些工具和方法。______(1)是一种基于80/20原理,用于找出影响项目产品或服务质量的主要因素的方法。_______(2)不属于质量控制活动。(1)
(2010年下半年)工作流(workflow)需要依靠(30)来实现,其主要功能是定义、执行和管理工作流,协调工作流执行过程中工作之间以及群体成员之间的信息交互。
《中华人民共和国网络安全法》于2017年6月1日起开始施行,_____________负责统筹协调网络安全工作和相关监督管理工作。
(2011年下半年)以下各项中,不能作为项目成本预算工具或技术的是(45)。
项目立项包括:项目建议、项目可行性分析、项目审批、项目招投标、项目合同谈判5个阶段。______属于项目可行性分析阶段的内容。
如果某信息系统集成项目的客户、集成商、厂商等一系列合作伙伴全都已经把业务部署在各自的Internet网站上,而现在某客户希望可以把自己的IT业务系统通过Internet与这些合作伙伴实现B2B集成,那么该系统最适合采用的技术是______。
路由器是在(12)实现网络互联的设备。
A公司的某项目即将开始,项目经理估计该项目10天即可完成,如果出现问题耽搁了也不会超过20天完成,最快6天即可完成。根据项目历时估计中的三点估算法,你认为该项目的历时为(37),该项目历时的估算方差为(38)。
某公司有一台Linux文件服务器,多台Windows客户端和Linux客户端。要求任意一个客户端都可以共享服务器上的文件,并且能够直接存取服务器上的文件。客户端和服务器间应该使用______协议。
某公司正在编制项目干系人沟通的计划,以下选项中______属于干系人沟通计划的内容。①干系人需要哪些信息②各类项目文件的访问路径③各类项目文件的内容④各类项目文件的接受格式⑤各类文件的访问权限
随机试题
简述无门店零售商几种主要的形式。
肺泡—动脉氧分压差在以下何种情况下不下降(增加最少)
A.肾小管增生B.肾间质化脓性炎C.肾小球纤维化、玻璃样变D.肾小球毛细血管内皮细胞增生,肾小球缺血E.肾小球囊脏层上皮细胞明显增生慢性硬化性肾小球肾炎的主要病理学特点是
具有下列化学结构的药物为
下列裱糊方法中,墙、柱面裱糊常用的方法有()。
单位工程验收应具备的条件有()。
阅读以下文字。完成下列问题。“腾笼换鸟”是几年前我国一些沿海地区根据当地经济发展状况和国家转变经济发展方式大战略提出的区域经济战略。由于国际金融危机冲击和经济形势变化,这一战略没有来得及全面实施。有人质疑“腾笼换鸟”脱离我国的优势,迟滞地区经济发
如今通过量子力学和广义相对论的描述,人类对于自然界的理解已经远远超越了100年前对于宇宙的机械化的理解。从基本粒子的行为到宇宙的形态,从微观到宏观,现代物理学的这两大支柱,几乎可以解释人们现在所观察到的一切自然现象。_______,物理学的这两大支柱各自主
打开窗体需要执行的宏操作是()。
A、 B、 C、 C题目是一个(AorB)式的选择疑问句,可以从A或B中选一项回答,也可以选择两者以外的C。这道题询问金女士参加会议或者仅仅我们参加会议,(C)项“听说只有你和我参加会议”符合题意,是正确选项。(A)
最新回复
(
0
)