首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
下面是一个简单的使用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
52
问题
下面是一个简单的使用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年下半年)(23)是将存储设备与服务器直接连接的存储模式。
()不是风险识别的原则。
(2009年下半年)在Perfect项目进行的第三个月,累计计划费用是25万元人民币,而实际支出为28万元,以下关于这个项目进展的叙述,正确的是(46)。
信息系统设计是开发阶段的重要内容,主要任务包括_____________:①明确组织对信息系统的实际需求,制定系统架构②对系统进行经济、技术条件、运行环境和用户使用等方面的可行性研究③选择计算机、操作系统、数据库、网络及技术等方案④确定软件系统的模
以下关于高速以太网的叙述中,___________是正确的。
(2013年上半年)某项目利润分析表如下所示。假设贴现率为10%,则第一年的利润净现值为(35)。
PPP协议是用于拨号上网和路由器之间通信的点到点通信协议,属于(1)协议,它不具有(2)的功能。(2)
数据链路层最基本的服务是将源自网络层的数据可靠地传输到相邻节点。数据链路层的主要协议不包括______。
为了改进应用软件的可靠性和可维护性,并适应未来软硬件环境的变化,应主动增加新的功能使应用系统能适应各类变化而不被淘汰。为了适应未来网络带宽的需要,在满足现有带宽需求下,修改网络软件从而使之支持更大的带宽,这种软件维护工作属于______。
(2010年上半年)Simple公司最近在一家大型企业OA项目招标中胜出,小张被指定为该项目的项目经理。公司发布了项目章程,小张依据该章程等项目资料编制了由项目目标、可交付成果、项目边界及质量测量指标等内容组成的(41)。
随机试题
以下关于使用或产生物质火灾危险性特征的描述中,()不属于甲类火灾危险性物质。
在铁减少期(ID)储存铁耗竭,应选择的评价指标是
A.阳斑B.阴斑C.麻疹D.风疹E.瘾疹皮下斑点隐隐稀少,色淡红,压之不退,伴诸虚症状,此为
停炉中应注意的主要问题是()。
费用按经济用途进行分类包括( )。
在整个“庄园会晤”期间,奥巴马没有使用“中美新型大国关系”这一表述,而是说中美要开启“新型合作模式”,有关学者表示,奥巴马不用“中美新型大国关系”这个表述并不奇怪。一方面,他不希望给外界造成中美两国“平起平坐”的印象,美国也不会真正给予中国“平等”地位,同
新中国成立初期,社会主义性质的国营经济的主要来源是()
李工接到任务后,认为本项目比较简单,很快就安排3名技术人员分别负责数据采集/输出模块、数据处理模块和比较监控模块的编写。总工程师听到汇报后,认为李工的方案和安排不妥,理由是李工忽视了系统的可靠性要求,对系统需求的理解不够深入。为实现系统关于可靠性方面的需求
在OSPF网络中,路由器定时发出Hello分组与特定的邻居进行联系。在默认情况下,如果(26)没有收到这种分组,就认为对方不存在了。
MyViewonWritingaBlog1.越来越多的大学生以写博客来记录生活,表达感情,发表意见2.有人支持,有人反对3.我的看法
最新回复
(
0
)