首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
下面是一个简单的使用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
70
问题
下面是一个简单的使用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://www.kaotiyun.com/show/b1JZ777K
本试题收录于:
网络工程师上午基础知识考试题库软考中级分类
0
网络工程师上午基础知识考试
软考中级
相关试题推荐
(2011年下半年)以下各项中,不能作为项目成本预算工具或技术的是(45)。
项目立项包括:项目建议、项目可行性分析、项目审批、项目招投标、项目合同谈判5个阶段。______属于项目可行性分析阶段的内容。
某企业的管理系统已进入试运行阶段,公司领导在试用该系统时认为他使用的出差报销表格的栏目设置不合理,便电话要求负责系统建设的项目经理修改,根据变更管理的要求,项目经理正确的做法是______________。
某公司正在启动一个新的系统集成项目,任命张某为项目负责人,并从多个职能部门抽调人员组成项目团队,采用矩阵式管理模式。张某认识到在这种情况下团队成员对职能经理的配合往往要超过对自己的配合,因此决定请求公司发布一份______。
以下关于入侵检测设备的叙述中,_______是不正确的。
下图某工程单代号网络图中,活动B的总浮动时间为()天。
使用网上银行卡支付系统付款与使用传统信用卡支付系统付款,两者的付款授权方式是不同的,下列论述正确的是(64)。
(2009年上半年)工作流技术在流程管理应用中的三个阶段分别是(70)。
开展区域链技术的商业试探性应用,属于国.家信息化体系中的()要素。
(2012年上半年)建设方和承建方甲就某信息系统建设项目进行了多次合同谈判均未达成一致,未能签定系统建设合同,但在谈判期间建设方获悉了甲的行业关键技术指标。之后建设方与另一承建方乙经过合同谈判后就系统建设签定了合同,同时将甲的关键技术指标透露给乙,导致甲蒙
随机试题
对环磷酰胺引起的白细胞减少具有促进恢复作用的药物是
在配备太阳电池的通信机房,还必须配有()。
某大型剧院拟进行维修改造,某装饰装修工程在公开招标投标过程中获得了该维修改造任务,合同工期为5个月,合同价款为1800万元。1.抹灰工程基层处理的施工过程部分记录如下:(1)在抹灰前对基层表面做了清除。(2)室内墙面、柱面和门窗洞口
甲公司2×20年度财务报表于2×21年3月26日对外报出。甲公司外聘注册会计师对其2×20年度财务报表进行审计时,关注到以下交易或事项:(1)甲公司与丙公司签订销售合同。按照合同约定,甲公司应于2×20年11月1日向丙公司销售10台其生产的设备,合同价格
()被誉为“园中三杰”。
中国现存最早的砖塔是()。
2013年二季度,我国税收月收入同比增速逐步提高,分别为7.9%、8.3%和12.9%。截至2013年6月,全国税收总收入完成59260.61亿元,同比增长7.9%,较上年同期回落1.9个百分点。其中,国内增值税、企业所得税同比分别增长6.6%和14.2%
五代花鸟画的代表画家有()和(),分别为野逸派和精细派的代表画家。
Youknowyoushoulddoit,otherpeopledoitallthetime.Maybeyou’vealreadydoneitbutitwasn’tverysatisfying,andyou’
源程序的文档化不包括
最新回复
(
0
)