首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
下面是一个简单的使用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
75
问题
下面是一个简单的使用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)。
某活动的工期采用三点估算法进行估算,其中最悲观估算是23天,最乐观估算是15天,最可能的估算是19天,则该活动的历时大致需要(1)天,该活动历时方差大概是(2)。(2)
(2009年下半年)下列选项中,不属于项目建议书核心内容的是(32)。
根据布线标准ANSI/TIA/EIA-568A,综合布线系统分为如下图所示的6个子系统。其中的①为(13)子系统、②为(14)子系统、③为(15)子系统。
(2011年上半年)系统集成企业Simple公司为做好项目风险管理,给风险定义了3个参数:①风险严重性:指风险对项目造成的危害程度;②风险可能性:指风险发生的几率;③风险系数:是风险严重性和风险可能性的乘积。其中,对项目进度延误、工作量偏差的风险严
某项目经理在与项目干系人的沟通过程中运用了多种沟通方法,有项目日志、项目例会、甲方代表参与的项目会议等,但仍有些关键问题未能与用户达成一致。根据沟通原则,可建议承建单位采用(59)方法。
关于范围控制的描述,不正确的是()。
在下列传输介质中,_____________的传输速率最高。
随机试题
心肌梗死患者,进行了溶栓和搭桥手术,但是术后出现了心律失常。引起再灌注性心律失常发生的主要制是
毒性药品采购除了需要报经当地卫生行政管理部门批准外,还须报经批准的部门是
社区病案不同于医院病案之处在于
[2011年第75题]可满足设备材料采购需要的建设工程设计文件是:
某化工企业装置检修过程中,因设备内残存可燃气体,在动火时发生爆炸。按照爆炸反应物质的类型,该爆炸最有可能属于()。
某水利工程混凝土按平浇法施工,高峰月浇筑强度为8000m3/月,小时不均匀系数取1.4,每月工作天数按25d计,每天工作小时按20h计,最大混凝土块的浇筑面积为200m2,浇筑分层厚度为0.25m,所用混凝土初凝时间为3h,终凝时间为8h,混凝土拌合料从出
某公司计划对某一项目进行投资,投资额为500万元,期限为4年,每年净现金流量分别为200万元、260万元、300万元、280万元。假设资本成本率为10%。该项目的净现金流量及复利现值系数如下表所示。根据以上资料,回答下列问题。该项目的净现值为(
培养机智、敏锐和自信心,防止疑虑、孤独,这些教育措施主要是针对()。
某小型企业网的地址块是192.168.162.0/27。根据RFC950文件规定,该企业网共划分了(29)个子网。
Lessthanayearago,anewgenerationofdietpillsseemedtoofferthelong-soughtanswertoourchronicweightproblems.Hund
最新回复
(
0
)