首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
下面是一个简单的使用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
71
问题
下面是一个简单的使用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
网络工程师上午基础知识考试
软考中级
相关试题推荐
(2011年下半年)以下各项中,不能作为项目成本预算工具或技术的是(45)。
关于计算机机房安全保护方案的设计,以下说法错误的是______。
(2009年下半年)下列选项中,不属于项目建议书核心内容的是(32)。
(2011年下半年)通过建立网络服务器集群,将大量通过网络连接的软件和硬件资源进行统一管理和调度,构成一个计算资源池,从而使用户能够根据所需从中获得诸如在线软件服务、硬件租借、数据存储、计算分析等各种不同类型服务,并按资源使用量进行付费。以上描述的是(1)
(2011年下半年)软件构架模式描述了如何将各个模块和子系统有效地组织成一个完整的系统。诸如Word和Excel这类图形界面应用软件所采用的架构模式是(7)。
(2009年上半年)Simple公司正在为某省公安部门开发二套边防出入境管理系统,该系统包括15个业务模块,计划开发周期为9个月,即在今年10月底之前交付。开发团队一共有15名工程师。今年7月份,中央政府决定开放某省个人到香港旅游,并在8月15日开始实施。
关于数据库和数据仓库技术的描述,不正确的是()。
为了改进应用软件的可靠性和可维护性,并适应未来软硬件环境的变化,应主动增加新的功能使应用系统能适应各类变化而不被淘汰。为了适应未来网络带宽的需要,在满足现有带宽需求下,修改网络软件从而使之支持更大的带宽,这种软件维护工作属于______。
(2010年下半年)Simple公司接到一栋大楼的布线任务,经过分析决定将大楼的四层布线任务分别交给甲、乙、丙、丁四个项目经理,每人负责一层布线任务,每层面积为10000平方米。布线任务由同一个施工队施工,该工程队有5个施工组。甲经过测算,预计每个施工组每
智慧城市建设参考模型包括有依赖关系的5层结构和对建设有约束关系的3个支撑体系,5层结构包括物联感知层、通信网络层、计算与存储层、数据及服务支撑层、智慧应用层;3个支撑体系除了建设和运营管理体系、安全保障体系之外还包括_________________。
随机试题
胃肠积滞多见牙疳可见
启发学生的积极思维通常采用的方法是()。
下列关于党史上的“第一”。表述错误的是()。
大黄、栀子同用的方剂是
A、系统误差B、RSDC、绝对误差D、定量限E、相关方法误差
功能降气化痰的药是
工程变更,是指施工过程中出现了与签订合同时的预计条件不一致的情况,而需要改变原定施工承包范围内的某些工作内容。下列说法正确的是( )。
根据弗洛伊德的观点,由本能的冲动所造成的焦虑是()。
中华文化绵延5000年,有其独特的价值体系,已成为中华民族的基因。中华优秀传统文化是中华民族的突出优势,________着中华民族最深沉的精神追求,为中华民族生生不息、发展壮大提供了丰厚________,潜移默化地影响着中国人的思想方式和行为方式,至今仍具
Britain’sprivateschoolsareoneofitsmostsuccessfulexports.Thechildrenofthewealthy【C1】______tothem,whetherfromChi
最新回复
(
0
)