首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
请阅读以下说明和Socket程序,填入(n)处。 【说明】 以下是客户机/服务器模型中的一个简单的客户机程序(服务器程序略),其工作过程非常简单:客户机与服务器建立连接后,接收服务器向客户机返回的一条消息。 程序中用到了两种结构hoste
请阅读以下说明和Socket程序,填入(n)处。 【说明】 以下是客户机/服务器模型中的一个简单的客户机程序(服务器程序略),其工作过程非常简单:客户机与服务器建立连接后,接收服务器向客户机返回的一条消息。 程序中用到了两种结构hoste
admin
2009-05-15
24
问题
请阅读以下说明和Socket程序,填入(n)处。
【说明】
以下是客户机/服务器模型中的一个简单的客户机程序(服务器程序略),其工作过程非常简单:客户机与服务器建立连接后,接收服务器向客户机返回的一条消息。
程序中用到了两种结构hostent与sockaddr_in:
hostent类型的结构定义
struct hostent { char*h_name; //主机名称
char**h_aliases; //别名列表
int h_addrtype; //主机地址类型: AF_XXX
int H_length; //主机地址长度: 32位
char**h_addr_list; //主机IP地址列表
}
#define h_addr h_addr_list[0]
sockaddr_in类型的结构定义,sockaddr_in是通用套接字结构sockaddr在TCP/IP协议下的结构重定义,为TCP/IP套接字地址结构。
Struct sockaddrin {
short int sin_family;//地址类型AF_XXX,其中AF_INET为TCP/IP专用
unsigned short int sin_port; //端口号
struct in_addrsin_addr; //Internet地址
//端口号以及Internet地址使用的是网络字节顺序,需要通过函数htons转换
}
struct iN_addr {
_u32 s_addr; //类型为unsignel_long
}
程序中使用到了多个函数:
struct hostent * gethostbyname( const char*hostname );
函数gethostbyname查询指定的域名地址对应的IP地址,返回一个hostent结构的指针,如果不成功返回NULL。
int_socket(int domain, int_type, int protocol);
函数socket创建一个套接字描述符,如果失败返回-1。domain为地址类型,type为套接字类型,本题中为SOCK_STREAM; protocol指定协议,本题中为0。
int connect( int sockfd, struct sockaddr*servaddr, int addrlen);
函数connect与服务器建立一个连接,成功返回0,失败返回-1。servaddr为远程服务器的套接字地址,包括服务器的IP地址和端口号;addrlen为地址的长度。
int read( int fd, char*buf, int len);
int write( int fd, char*buf, int len);
函数read和write从套接字读和写数据,成功返回数据量大小,否则返回-1。buf指定数据缓冲区,len指定接收或发送的数据量大小。
【socket程序】
#define PORT4490
//定义端口号为4490
int main( int argc, char*argv[ ])
{
int sockfd, nbytes; //套接字描述符、读入缓冲区的字节数
char buf[1024]; //缓冲区
stmct hostent*he; //主机信息类型
struct sockaddr_in srvaddr; //Internet套接字结构
if (1)
{perror("调用参数为零,请输入服务器的主机名!\n");exit(1); }
if (2)
{perror("无法通过主机名获得主机信息!\n");exit(1); }
if (3)
{perror("无法创建套按字!\n");exit(1); }
bzero( &srvaddr, sizeof(srvaddr));//置空srvaddr
srvaddr, sin_family=AF_INET;
srvaddr, sin_port: (4); srvaddr.sin_addr: (5);
if(connect(sockfd, (6), sizeof( struct sockaddr))=-1)
{perror("连接失败!\n");exit(1); }
//连接服务器,如果失败则提示用户
if(( nbytes=read ( sockfd, buf, MAXDATASIZE))=-1)
{perror("读失败!\n");exit(1); }
//从套容接字中读出数据
buf[nbytes]=’\0’;
prinff("读到的内容:%s", buf);
close( sockfd);
//打印数据并关闭套接字
}
选项
答案
(1)argc! =2 //判断参数个数是否为2;即判断是否输入主机名。 (2)(he=gethostbyname(argv[1]))=NULL //取得主机信息 (3)(sockfd=socket(AF_NET, SOCK_STREAM.0))=-1 //返回socket描述符 (4)htons(PORT) //对端口进行主机字节序向网路字节序的转换 (5)*((structin_addr*)he→h_addr) //设定主机地址 (6)(struct sockaddr*)&srvaddr //取服务器地址值的地址
解析
转载请注明原文地址:https://kaotiyun.com/show/K2JZ777K
本试题收录于:
网络工程师上午基础知识考试题库软考中级分类
0
网络工程师上午基础知识考试
软考中级
相关试题推荐
在质量控制过程中,经常会使用一些工具和方法。______(1)是一种基于80/20原理,用于找出影响项目产品或服务质量的主要因素的方法。_______(2)不属于质量控制活动。(2)
公司计划开发一个新的信息系统,该系统需求不明确,事先不能定义产品所有需求,需要经过多期开发完成,该系统的生命周期模型宜采用()。
某企业的管理系统已进入试运行阶段,公司领导在试用该系统时认为他使用的出差报销表格的栏目设置不合理,便电话要求负责系统建设的项目经理修改,根据变更管理的要求,项目经理正确的做法是______________。
根据项目干系人权力/利益的分类,针对对项目有重大影响,同时项目执行对其有明显利益关系的干系人应采用___________的管理策略。
(2013年上半年)E-mail客户端程序要找到邮件服务器,FTP客户端程序要找到FTP服务器,Web浏览器要找到Web服务器,通常要用到(19)。
(2011年下半年)通过建立网络服务器集群,将大量通过网络连接的软件和硬件资源进行统一管理和调度,构成一个计算资源池,从而使用户能够根据所需从中获得诸如在线软件服务、硬件租借、数据存储、计算分析等各种不同类型服务,并按资源使用量进行付费。以上描述的是(1)
A公司的某项目即将开始,项目经理估计该项目10天即可完成,如果出现问题耽搁了也不会超过20天完成,最快6天即可完成。根据项目历时估计中的三点估算法,你认为该项目的历时为(37),该项目历时的估算方差为(38)。
实施商业智能的步骤依次是:需求分析、()、建立商业智能分析报表、用户培训和数据模拟测试、系统改进和完善。
随机试题
下列选项中,正确揭示了认识的本质的是
下列食物中,铁的吸收率最低的为()。
A.第3腰椎B.髂前上棘与脐连线中点C.两髂前上棘连线中点下方3cmD.足侧倾斜15°,耻骨联合上3cmE.头侧倾斜20°~25°,两髂前上棘连线中点腰椎正位中心线为
根据《建设项目环境保护管理条例》,建设单位()采取公开招标的方式,选择环评单位,对建设项目进行环境影响评价。
关键部位或技术难度大、施工复杂的分项工程施工前,承包单位的技术交底书(作业指导书)要报( )审查。
项目组织结构中的层次包括( )。
材料三:阅读下面的短文。完成71—75题。地衣是植物界中结构奇特、与众不同的一个大家族,它分泌的地衣酸可腐蚀岩石,对土壤的形成起着开拓作用,堪称不毛之地的“拓荒先锋”。长期以来,地衣的结构都是不解之谜。直到1867年,德国植物学家西蒙•
数字图书馆是计算机技术、多媒体技术、网络技术和其他相关技术发展的产物,有着传统图书馆无法比拟的优势和特征,其服务的范围大大超出图书馆的围墙。凡网络所联之地,均可使用,可实现全天候、全自动、智能化的服务。近年来,数字图书馆的建设和研究在国内取得了很大的发展,
没有文化的交流与碰撞,也就没有文化的创新,文化就必然会走向固步自封和_______,其最终的结局只能是走向_______。填入划横线部分最恰当的一项是:
Lematin,elleprendunjusdefruitstoutdesuiteaprès_________.
最新回复
(
0
)