首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
下面是一个简单的使用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
40
问题
下面是一个简单的使用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
网络工程师上午基础知识考试
软考中级
相关试题推荐
签订信息系统工程项目合同时有许多注意事项。下列选项中,(53)在合同签订时不用考虑。
为了满足员工的归属感需要,某公司经常为新员工组织一些聚会或者社会活动,按照马斯洛的需要层次理论,这属于满足员工的_______的需要。
(2009年下半年)在Perfect项目进行的第三个月,累计计划费用是25万元人民币,而实际支出为28万元,以下关于这个项目进展的叙述,正确的是(46)。
某公司系统安全管理员在建立公司的“安全管理体系”时,根据GB/T20269-2006《信息安全技术信息系统安全管理要求》,对当前公司的安全风险进行了分析和评估,他分析了常见病毒对计算机系统、数据文件等的破坏程度及感染特点,制定了相应的防病毒措施。这一做法符
以下关于入侵检测设备的叙述中,_______是不正确的。
关于无连接的通信,下面描述中正确的是(18)。
(2009年下半年)为了确保系统运行的安全,针对用户管理,下列做法不妥当的是(27)。
在网络存储结构中,()成本较高、技术较复杂,适用于数据量大、数据访问速度要求高的场合。
以下关于高速以太网的叙述中,___________是正确的。
A公司的某项目即将开始,项目经理估计该项目10天即可完成,如果出现问题耽搁了也不会超过20天完成,最快6天即可完成。根据项目历时估计中的三点估算法,你认为该项目的历时为(37),该项目历时的估算方差为(38)。
随机试题
Howcanwegetridofgarbage(垃圾)?Dowehaveenoughenergysourcestomeetourfutureenergyneeds?Thesearetwoimporta
A.FⅠ、PH、HKB.FⅡ、FⅤ、FⅧ、FⅫC.FⅡ、FⅤ、FⅪ、FⅫD.FⅡ、FⅦ、FⅨ、FⅩE.FⅢ、FⅣ、FⅤ、FⅧ起辅因子作用的凝血因子是
《安全生产法》的实施时间是()。
财政收入政策和财政支出政策的主要任务是()。
那些有机会接触决策制定人的人们可以说是具有一定的权力,“能够接近那些有权力的人”本身就是一种权力来源。这体现的是企业利益相关者的权力来源中的()。
好孩子定向阶段属于道德发展阶段论的( )。
历经谣言,真理才更显珍贵。网络时代的谣言如同超级病毒,传播速度之快,令人愕然;社会危害之大,让人心惊,让人们得到深刻的教训。不信谣、不传谣,携手营造一个清新、健康、向上的互联网共有家园是当代青年应有的文化担当。运用哲学知识,谈谈你对“历经谣言,真理才
幼儿园环境按其性质可分为物质环境和()两大类。
莫卧尔帝国
计算机病毒()。
最新回复
(
0
)