首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
下面是一个简单的使用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
35
问题
下面是一个简单的使用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
网络工程师上午基础知识考试
软考中级
相关试题推荐
(2010年下半年)工作流(workflow)需要依靠(30)来实现,其主要功能是定义、执行和管理工作流,协调工作流执行过程中工作之间以及群体成员之间的信息交互。
以下关于信息的质量属性的叙述中,不正确的是:_________________。
M公司委托T公司开发一套新的管理信息系统,T公司未能按合同规定的日期交付最终产品,给M公司造成巨大的运营损失,因此M公司向T公司提出索赔,其中不包括______。
某公司系统安全管理员在建立公司的“安全管理体系”时,根据GB/T20269-2006《信息安全技术信息系统安全管理要求》,对当前公司的安全风险进行了分析和评估,他分析了常见病毒对计算机系统、数据文件等的破坏程度及感染特点,制定了相应的防病毒措施。这一做法符
在审查项目需求规格说明书时,发现该文档图表编号混乱。建立()可以帮助解决上述问题。①文档管理制度②文档书写规范③图标标号规则④文档加密规则
某系统集成商准备去投标一个政府网站开发项目,该系统集成商在项目招投标阶段的工作依次是_________________。①组建评标小组②编制投标文件③参与开标过程④研读招标公告⑤提交投标文件
项目将要完成时,客户要求对工作范围进行较大的变更,项目经理应(50)。
路由器是在(12)实现网络互联的设备。
()是在确认范围过程中使用的工具与技术。
面向对象中的(17)机制是对现实世界中遗传现象的模拟。通过该机制,基类的属性和方法被遗传给派生类;而(18)是指把数据以及操作数据的相关方法组合在同一单元中,使我们可以把类作为软件复用中的基本单元,提高内聚度,降低耦合度。
随机试题
促红细胞生成素(EPO)的产生主要部位是
男性,49岁。右侧胸痛、干咳2周就医。体检:气管居中,右胸叩诊浊音,呼吸音消失。X线胸片示右侧大量胸腔积液,胸腔积液为血性,找到癌细胞,大致为腺癌。本例最有价值的组织学定性诊断技术是
(1)3月10日,企业会计科会同档案科对单位会计档案进行了清理,编制了会计档案销毁清册,将保管期已满的会计档案按规定程序全部销毁,其中包括一些保管期满但尚未结清债权债务的原始凭证。(2)3月21日,会计科在例行审核有关单据时,发现一张购买计算机的发票,其
下列项目中,会引起存货账面价值发生增减变动的有()。
社区工作者何欢组织社区成员积极参与“关爱老年人”活动,得到了社区居民的广泛响应。由此看出,社区工作是以()为对象的社会工作介入方法。
辛亥革命失败的主观原因是资产阶级革命派本身存在很多弱点和错误,这些弱点和错误的根源是中国民族资产阶级的()。
欧洲的舞蹈批评家说:“美国芭蕾水平的提高是由于现在有更多的欧洲人在美国教授芭蕾。美国的芭蕾教师中,在欧洲出生并接受训练的教师比例上升了,我之所以知道这一点是因为在我去年去纽约时,我所遇见的欧洲来的芭蕾教师——在欧洲出生并接受训练——比从前要多。”下列哪一项
设,则A与B().
168.1.1动态主机配置协议(DHCP)用于实现同一个广播域范围内IP地址的集中管理,并有效且动态地分配客户端的TCP/IP的设置。DHCP服务器和DHCP客户端的交互过程如下。①DHCP客户端广播DHCPdiscover(DHCP发现)报文,
使用“打开”对话框的方法是()。
最新回复
(
0
)