首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
请阅读以下说明和Socket程序,填入(n)处。 【说明】 以下是客户机/服务器模型中的一个简单的客户机程序(服务器程序略),其工作过程非常简单:客户机与服务器建立连接后,接收服务器向客户机返回的一条消息。 程序中用到了两种结构hoste
请阅读以下说明和Socket程序,填入(n)处。 【说明】 以下是客户机/服务器模型中的一个简单的客户机程序(服务器程序略),其工作过程非常简单:客户机与服务器建立连接后,接收服务器向客户机返回的一条消息。 程序中用到了两种结构hoste
admin
2009-05-15
32
问题
请阅读以下说明和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://jikaoti.com/ti/M8n7FFFM
本试题收录于:
网络工程师上午基础知识考试题库软考中级分类
0
网络工程师上午基础知识考试
软考中级
相关试题推荐
在项目整体管理过程中监督和控制项目是一个关键环节,下列不属于监督和控制过程组的是______。
(2009年下半年)(57)是正式批准一个项目的文档,或者是批准现行项目是否进入下一阶段的文档。
项目将要完成时,客户要求对工作范围进行较大的变更,项目经理应(50)。
(2013年上半年)王工是公司一个物联网网关开发项目的项目经理。他根据项目计划将其中的某个软件模块转包给了一个分包商。小李是分包商的新项目经理。II应建议小李首先(42)。
使用网上银行卡支付系统付款与使用传统信用卡支付系统付款,两者的付款授权方式是不同的,下列论述正确的是(64)。
路由器是在(12)实现网络互联的设备。
某公司正在编制项目干系人沟通的计划,以下选项中______属于干系人沟通计划的内容。①干系人需要哪些信息②各类项目文件的访问路径③各类项目文件的内容④各类项目文件的接受格式⑤各类文件的访问权限
为了改进应用软件的可靠性和可维护性,并适应未来软硬件环境的变化,应主动增加新的功能使应用系统能适应各类变化而不被淘汰。为了适应未来网络带宽的需要,在满足现有带宽需求下,修改网络软件从而使之支持更大的带宽,这种软件维护工作属于______。
根据题意,补充图2-3中(a)处的空缺,即货物关系模式的属性。写出每种关系模式的主键,将其填写在答题纸的对应栏内。
根据上述说明和实体-联系图,得到该住房管理系统的关系模式如下所示,请补充住宿关系。房间(房间号,收费标准,床位数目)客人(身份证号,姓名,性别,出生日期,地址)住宿((1),入住日期,退房日期,预付款额)若将上述各关系直接实现为
随机试题
毛泽东思想的活的灵魂是()
Fewhousesinthisdistrict______theterribleearthquakeandmanypeoplewerekilled.
蛋白质α螺旋是最常见的二级结构。下列5种氨基酸中哪个最适合形成α螺旋
患者,女性,65岁。夜尿增多3年,乏力4个月。曾服用“龙胆泻肝丸”5年。查体:BP145/90mmHg,贫血貌。实验室检查:血Hb74g/L,Scr220μmol/L。尿常规检查:尿比重1.010,尿糖(+),尿蛋白(+),尿RBC2~3个/HP。B超示双
下列关于地方行政机关的说法不正确的是()。
关于施工现场布置的说法中,正确的是()。
背景:某公司承建城市跨线桥,主桥长520m,桥宽22.15m,跨越现况河渠;桥梁中三跨上部结构为钢筋混凝土预应力连续梁,跨径组合为30m+35m+30m,其余部分为22m长T形简支梁。承台平面尺寸5m×26m,以群桩形式布置128根桩,采用沉桩施工。项目
按管理和使用权限的不同,我国税收可以划分为()。Ⅰ.中央税Ⅱ.价内税Ⅲ.地方税Ⅳ.价外税
甲、乙二人上午8点同时从东村骑车到西村去,甲每小时比乙多骑6千米,中午12点甲到达西村后立即返回东村,在距西村15千米处遇到乙。东、西两村相距多远?()
CiscoCatalyst6500交换机采用telnet远程管理方式进行配置,其设备管理地址是194.56.9.178/27,缺省路由是194.56.9.161,下列对交换机预先进行的配置,正确的是()。
最新回复
(
0
)