首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
下面是一个简单的使用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
57
问题
下面是一个简单的使用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://kaotiyun.com/show/b1JZ777K
本试题收录于:
网络工程师上午基础知识考试题库软考中级分类
0
网络工程师上午基础知识考试
软考中级
相关试题推荐
(2009年下半年)(57)是正式批准一个项目的文档,或者是批准现行项目是否进入下一阶段的文档。
一个新测试中心将在两年内建成。项目发起人和项目经理已经确定并且高层次估算已经开始。预计该项目可以在预算内按进度计划完成。唯一的难点是获得完成工作所需的具有正确专门技能的人力资源。在这种情况下,项目经理应建立()。
以下关于采购工作说明书的叙述中,______是错误的。
(2013年上半年)王工是公司一个物联网网关开发项目的项目经理。他根据项目计划将其中的某个软件模块转包给了一个分包商。小李是分包商的新项目经理。II应建议小李首先(42)。
网络协议和设备驱动软件经常采用分层架构模式,其主要原因是()。
某项目经理在与项目干系人的沟通过程中运用了多种沟通方法,有项目日志、项目例会、甲方代表参与的项目会议等,但仍有些关键问题未能与用户达成一致。根据沟通原则,可建议承建单位采用(59)方法。
A公司的某项目即将开始,项目经理估计该项目10天即可完成,如果出现问题耽搁了也不会超过20天完成,最快6天即可完成。根据项目历时估计中的三点估算法,你认为该项目的历时为(37),该项目历时的估算方差为(38)。
小张是软件研发项目经理,负责管理的某项目已经进入实现阶段,此时用户提出要增加一项新的功能,小张应该__________。
为了改进应用软件的可靠性和可维护性,并适应未来软硬件环境的变化,应主动增加新的功能使应用系统能适应各类变化而不被淘汰。为了适应未来网络带宽的需要,在满足现有带宽需求下,修改网络软件从而使之支持更大的带宽,这种软件维护工作属于______。
下图中(单位:天)关于活动H和活动I之间的关系描述正确的是:_____________。
随机试题
朱熹认为“德”、“礼”、“政”、“刑”,相为始终,循环运动,正确的路线是
商务谈判胜负的决定性因素在于()
外科感染的特点,下列哪项是错误的?
A.MaslowB.NANDAC.Majoryc0rdonD.AlfaroE.Holmes人类基本需要层次论的是
工程设计概算由()。
根据现行财税制度,贷款还本的资金来源主要有( )。
(2014年)大华股份有限公司(以下简称“大华公司”)于2006年在上海证券交易所上市,普通股总数为5亿股,甲、乙分别持有大华公司31%和25%的股份。截至2013年年底,大华公司净资产额为10亿元,最近3年可分配利润分别为3000万元、2000万元和10
建立现代企业制度是国有企业改革的方向。()
广义相对论发表以来,一直是最成功的引力理论,已经__________了无数次的天文观测和各种实验的检验。但是几乎所有这些都是在弱引力场下,检验爱因斯坦引力和牛顿引力的微小差距。如果想使爱因斯坦引力的效应比较明显,则需要在强引力场中才能发生,而这方面的检验还
Therearesomeearthphenomenayoucancounton,butthemagneticfield,somedayisnotofthem.Itfluctuatesinstrength,drif
最新回复
(
0
)