首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
请阅读以下说明和Socket程序,填入(n)处。 【说明】 以下是客户机/服务器模型中的一个简单的客户机程序(服务器程序略),其工作过程非常简单:客户机与服务器建立连接后,接收服务器向客户机返回的一条消息。 程序中用到了两种结构hoste
请阅读以下说明和Socket程序,填入(n)处。 【说明】 以下是客户机/服务器模型中的一个简单的客户机程序(服务器程序略),其工作过程非常简单:客户机与服务器建立连接后,接收服务器向客户机返回的一条消息。 程序中用到了两种结构hoste
admin
2009-05-15
57
问题
请阅读以下说明和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
网络工程师上午基础知识考试
软考中级
相关试题推荐
根据《软件文档管理指南GB/T16680—1996》,关于软件文档的归档工作,下列说法中______是不正确的。
《国家信息化领导小组关于我国电子政务建设指导意见》中明确指出政务内网主要是(7)以上政务部门的办公网,与其下属政务部门的办公网物理隔离。
(2012年下半年)(41)是定义项目范围、定义项目组织,设定项目产品质量和规格、估算和控制项目费用、估算项目时间周期和进度安排的基础。
项目经理在生成WBS时,一般将项目可交付物逐层分成更小的、更易管理的单元,以便于清晰定义项目活动的工作包。分解的单元应易于管理,分解原则一般不体现在________(1)方面。______(2)不属于项目工作分解的活动。(2)
存储磁盘阵列按其连接方式的不同,可分为三类,即DAS、NAS和()。
信息系统设计是开发阶段的重要内容,主要任务包括_____________:①明确组织对信息系统的实际需求,制定系统架构②对系统进行经济、技术条件、运行环境和用户使用等方面的可行性研究③选择计算机、操作系统、数据库、网络及技术等方案④确定软件系统的模
(2011年上半年)以下关于信息系统集成项目的特点描述不正确的是(53)。
小张是软件研发项目经理,负责管理的某项目已经进入实现阶段,此时用户提出要增加一项新的功能,小张应该__________。
中间件是一件独立的系统软件或服务程序,()不属于中间件。
随机试题
家里有个小侄女,哥哥很是喜欢,所以常常教小侄女背诵儿歌。可是,很无奈,哥哥每次都是想尽办法,累得满头大汗,小侄女还是不能完全背会儿歌。但是小侄女对电视中有关儿童食品的广告,只看过一两次,就能完整而熟练地背下来,而且惟妙惟肖,真是让人不可理解。根据此案例,
关于早期食管癌X线钡餐造影的描述不正确的是
A.机械性肠梗阻B.痉挛性肠梗阻C.绞窄性肠梗阻D.麻痹性肠梗阻E.闭袢性肠梗阻结肠癌
患者,女,18岁。乏力、疲倦、面色苍白3个月。查:WBC4.5×109/L,Hb72g/L,RBC3.5×1012/L,Plt145×109/L,MCV62fl,MCHC28%,MCH26pg。血清铁降低,血清铁蛋白降低,转铁蛋白饱和度下降,总
监理工程师对工程项目质量的控制属于( )的控制。
电子邮件的特点有()。
导游人员未经旅行社委派,私自承揽或者以其他方式直接承揽导游业务进行导游活动的,由旅游行政管理部门责令改正,处()罚款。
如图23所示,AB为水平地面,O为一水平放置的平面镜M上的一点,平面镜离地面的高度为H,SO为一条沿竖直方向射向O点的很细的激光束。现在使平面镜以O点为轴沿顺时针方向匀速转动,已知转动的角速度ω。试求:当平面镜由图示位置转过30~角的瞬间,反射光束在地面上
Completetheformbelow.WriteNOMORETHANTWOWORDSAND~ORANUMBERforeachanswer.APPLICATIONFORMTypeofI.D.:
Todaymanypeoplearepayingmoreattentionto(reduce)________stressintheirlives.
最新回复
(
0
)