更多"【说明】 网络应用的基本模型是客户机/服务器模型,这是一个不对称的编"的相关试题:
[填空题]【说明】
网络应用的基本模型是客户机/服务器模型,这是一个不对称的编程模型,通信的双方扮演不同的角色:客户机和服务器。
以下是一个简单的客户机程序(服务器程序略),其工作过程非常简单:客户机与服务器建立连接后,接收服务器向客户机返回的一条消息。
程序中用到了两种结构hostent与sockaddr - in:
hostent类型的结构定义如下:
struct hostent {char*h_name; //主机的正式名称
char * * h_aliases; //别名列表
int h_addrtype; //主机地址类型:AF_XXX
Int H_length; //主机地址长度:4B(32b)
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_addr sin_addr; //Internet地址
//端口号以及Internet地址使用的是网络字节顺序,需要通过函数htons转换
}
struct iN_addr{
_u32s_addr; //类型为unsignel_long
}
程序中使用到了多个函数:
struct hostent * gethostbyname(const char*hostname);
函数gethostbyname查询与指定的域名地址对应的IP地址,返回一个hostent结构的指针,如果不成功则返回NULL。
int_socket(int domain,int_type,int protocol);
[填空题]【说明】
网络应用的基本模型是客户机/服务器模型,这是一个不对称的编程模型,通信的双方扮演不同的角色:客户机和服务器。
以下是一个简单的客户机程序(服务器程序略),其工作过程非常简单:客户机与服务器建立连接后,接收服务器向客户机返回的一条消息。
程序中用到了两种结构hostent与sockaddr - in:
hostent类型的结构定义如下:
struct hostent char*h_name; //主机的正式名称
char * * h_aliases; //别名列表
int h_addrtype; //主机地址类型:AF_XXX
Int H_length; //主机地址长度:4B(32b)
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_addr sin_addr; //Internet地址
//端口号以及Internet地址使用的是网络字节顺序,需要通过函数htons转换
struct iN_addr
_u32s_addr; //类型为unsignel_long
程序中使用到了多个函数:
struct hostent * gethostbyname(const char*hostname);
函数gethostbyname查询与指定的域名地址对应的IP地址,返回一个hostent结构的指针,
[简答题]网络应用的基本模型是客户机/服务器模型,这是一个不对称的编程模型,通信的双方扮演不同的角色:客户机和服务器。本题中的程序,客户机接收用户在键盘上输入的文字内容,服务器将客户机发送来的文字内容直接返回给客户机。
此程序中,用户自定义函数有:
int read_all( int fd, void*buf, int nbyte );
函数read all从参数fd指定的套接字描述符中读取nbytes字节数据至缓冲区buf中,成功返回实际读的字节数(可能小于nbyte),失败返回-1。
int write_all( int fd, void*buf, int nbyte );
函数write_all向参数fd指定的套接字描述符中写入缓冲区buf前nbyte字节的数据,成功返回实际写的字节数(始终等于nbyte),失败返回-1。
write_requ函数为客户机发送请求的函数;read_requ函数为服务器获取请求的函数
服务器主程序部分:
#define SERVER_PORT 8080 //服务器监听端口号为8080
#define BACKLOG 5 //连接请求队列长度
int main( int argc, char*argv[]) {
int listenfd, connfd //监听套接字、连接套接字描述符
struct sockaddr_in servaddr; //服务器监听地址
listenfd=(1); //创建用于监听的套接字
if (listenfd<0) {
fPrintf( stderr,"创建套接字错误!");
exit(1);
} //套接字创建失败时打印错误信息
bzero(&servaddr.sizeof(servadd));//将地址结构置空
servaddr.sin_family=AF_INET;//设置地址结构遵循TCP/IP协议
servaddr.sin_addrs_addr=htonl.(2);//设置监听的IP地址为任意合法地址,并将该地址转换为网络字节顺序
servaddr.sin_port=(3);//设置监听的端口,并转化为网络字节顺序
if ( bind(4)<0 )
[简答题]【说明】
以下是客户机/服务器模型中的一个简单的客户机程序(服务器程序略),其工作过程非常简单:客户机与服务器建立连接后,接收服务器向客户机返回的一条消息。
程序中用到了两种结构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*serva
[单项选择]
客户机/服务器应用模式的框架是 (35) ,其中,客户机的主要功能是 (36) 。客户机/服务器应用模式的中间件是 (37) 。
(35)处填()。
A. 客户机,服务器,网络操作系统
B. 客户机,服务器,中间件
C. 客户机,服务器,应用程序
D. 客户机,服务器,操作系统
[填空题]三层客户机/服务器结构中,服务器包括应用服务器和 【9】 服务器。
[填空题]三层客户机/服务器结构中,服务器包括应用服务器和______服务器。
[填空题]基本的客户机/服务器(Client/Server, C/S)结构是由客户机、服务器和 【14】 三部分组成。
[填空题]三层客户机/服务器结构中的三个层次分别是客户端、应用服务器和【 】。
[填空题]【12】 是WWW客户机和WWW服务器之间的应用层传输协议。