最新网络程序设计复习题.docx
《最新网络程序设计复习题.docx》由会员分享,可在线阅读,更多相关《最新网络程序设计复习题.docx(10页珍藏版)》请在冰豆网上搜索。
最新网络程序设计复习题
1.TCP/UDP在传输层;IP在网络层;MAC在数据链路层
2.NAT的实现方式有三种,即静态转换、动态转换和端口多路复用
3.端口号是16位的,范围在0~65535
4.在套接字通信中,常用套接字类型包括三类:
流式套接字、数据报套接字和原始套接字
①流式套接字(其类型字段的值是SOCK_STREAM):
提供面向连接的、可靠的字节流服务,应用程序所访问的传输层协议是TCP协议。
②数据报式套接字(其类型字段的值是SOCK_DGRAM):
提供无连接的,不可靠的数据报服务,应用程序所访问的传输层协议是UDP协议。
③原始套接字(其类型字段的值是SOCK_RAW):
允许应用程序直接对较低层的协议,如IP、ICMP进行访问。
5.有状态服务器
定义:
保存状态信息的服务器
优势:
减少客户和服务器交换报文的大小;允许服务器快速相应请求
无状态服务器
定义:
不保存任何状态信息的服务器
优势:
提高协议的可靠性
6.并发服务器
定义:
在一个时刻只处理一个请求的服务器
循环服务器
定义:
在一个时刻可以处理多个请求的服务器
7.面向应用的网络编程方法
(1)WinInet编程
(2)基于WWW应用的网络编程
(3)面向SOA的WebService
8.面向原始帧的网络编程方法
(1)直接网卡编程技术
(2)基于PacketDriver的网络编程方法
(3)基于NDIS的网络编程
(4)WinPcap编程
9.UDP是无连接的;TCP是面向连接的
意义:
①决定了客户和服务器交互所采用的算法;
②决定了下层系统所提供的可靠性等级;
面向连接的服务器
优点:
易于编程
缺点:
资源消耗问题
无连接的服务器
优点:
无资源消耗问题
缺点:
编程复杂
10.bind和listen函数是非阻塞的
11.B/S模型
B/S(Browse/Server)模型也叫B/S模式,它是一种基于Web的通信模型,使用HTTP通信。
B/S是一种特殊的C/S模型,特殊之处就在于这种模型的客户端一般是某种流行的浏览器,例如,微软的InternetExplorer。
优点:
单台计算机可以访问任何一个Web服务器,不需要针对不同的服务器分别提供专用的客户端软件。
12.客户/服务器模型
优点:
(1)结构简单
(2)支持分布式、并发环境
(3)服务器集中管理资源,有利于权限控制和系统安全
(4)可扩展性好
缺点:
(1)缺乏有效的安全性
(2)客户负荷过重
(3)服务器工作效率低
(4)容易造成网络阻塞
13.浏览器/服务器模型
优点:
(1)具有分布性特点,可以随时随地进行查询、浏览等业务处理
(2)业务扩展简单方便,通过增加网页即可增加服务器功能
(3)维护简单方便
(4)开发简单,共享性强
缺点:
(1)操作时以鼠标为最基本的操作方式,无法满足快速操作的要求
(2)页面动态刷新,响应速度明显降低
(3)功能弱化,难以实现传统模式下的特殊功能要求
14.字节顺序:
大端顺序和小端顺序
15.Linux中提供的基本I/O功能
16.会聚点问题的解决方案
1)要求下层通信协议在请求报文到达后自动创建运行程序
——底层通讯程序太复杂!
2)要求在任何一对进行通信的应用进程中,有一方必须在启动执行后(无限期)等待对方与其联系。
——客户-服务器模型的解决方案
17.客户端通信过程:
①socket初始化;
②创建套接字,指定使用TCP(可靠的传输服务)进行通信;
③指定服务器地址和通信端口;
④向服务器发送连接请求;
⑤进行数据传输;
⑥关闭套接字;
⑦结束对windowssocketsdll的使用。
18.服务器通信过程:
①socket初始化;
②创建套接字,指定使用TCP(可靠的传输服务)进行通信;
③指定本地地址和通信端口;
④等待客户端的连接请求;
⑤进行数据传输;
⑥关闭套接字;
⑦结束对windowssocketsdll的使用。
19.接收函数的调用结果有很多种
完整接收流数据
intiResult,recvbuflen;
charrecvbuf[MSGSZ];
do{
iResult=recv(ConnectSocket,recvbuf,recvbuflen,0);
if(iResult>0)
printf("Bytesreceived:
%d\n",iResult);
else{
if(iResult==0)
printf("Connectionclosed\n");
else
printf("recvfailedwitherror:
%d\n",WSAGetLastError());
}
}while(iResult>0);
20.接收定长数据
intrecvn(SOCKETs,char*recvbuf,unsignedintfixedlen)
{
intiResult;//存储单次recv操作的返回值
intcnt;//用于统计相对于固定长度,剩余多少字节尚未接收
cnt=fixedlen;
while(cnt>0){
iResult=recv(s,recvbuf,cnt,0);
if(iResult<0){
//数据接收出现错误,返回失败
printf("接收发生错误:
%d\n",WSAGetLastError());
return-1;
}
if(iResult==0){
//对方关闭连接,返回已接收到的小于fixedlen的字节数
printf("连接关闭\n");
returnfixedlen-cnt;
}
//printf("接收到的字节数:
%d\n",iResult);
//接收缓存指针向后移动
recvbuf+=iResult;
//更新cnt值
cnt-=iResult;
}
returnfixedlen;
}
21.接收变长数据
intrecvvl(SOCKETs,char*recvbuf,unsignedintrecvbuflen)
{
intiResult;//存储单次recv操作的返回值
unsignedintreclen;//用于存储报文头部存储的长度信息
//获取接收报文长度信息
iResult=recvn(s,(char*)&reclen,sizeof(unsignedint));
if(iResult!
=sizeof(unsignedint)
{
//如果长度字段在接收时没有返回一个整型数据就返回(连接关闭)或-1(发生错误)
if(iResult==-1)
{
printf("接收发生错误:
%d\n",WSAGetLastError());
return-1;
}
else
{
printf("连接关闭\n");
return0;
}
}
//转换网络字节顺序到主机字节顺序
reclen=ntohl(reclen);
if(reclen>recvbuflen)
{
//如果recvbuf没有足够的空间存储变长消息,则接收该消息并丢弃,返回错误
while(reclen>0)
{
iResult=recvn(s,recvbuf,recvbuflen);
if(iResult!
=recvbuflen)
{
//如果变长消息在接收时没有返回足够的数据就返回(连接关闭)或-1(发生错误)
if(iResult==-1)
{
printf("收发生错误:
%d\n",WSAGetLastError());
return-1;
}
else{
printf("连接关闭\n");
return0;
}
}
reclen-=recvbuflen;
//处理最后一段数据长度
if(reclenrecvbuflen=reclen;
}
printf("可变长度的消息超出预分配的接收缓存\r\n");
return-1;
}
//接收可变长消息
iResult=recvn(s,recvbuf,reclen);
if(iResult!
=reclen){
//如果消息在接收时没有返回足够的数据就返回(连接关闭)或-1(发生错误)
if(iResult==-1){
printf("接收发生错误:
%d\n",WSAGetLastError());
return-1;
}
else{
printf("连接关闭\n");
return0;
}
}
returniResult;
}
价格便宜些□服务热情周到□店面装饰有个性□商品新颖多样□简答题
因此不难看出,自制饰品在校园里也大有市场所在。
对于那些走在流行前端的女生来说,〝捕捉〞新事物便〝捕捉〞到了时尚与个性。
2、阐述程序、套接字、端口和协议之间的关系
程序和套接字的关系:
一个程序可以同时使用多个套接字,不同套接字完成不同的传输任务。
多个应用程序可以同时使用同一个套接字,不过这种情况并不常见。
3.www。
oh/ov。
com/teach/student/shougong/套接字和端口的关系:
每个套接字都有一个关联的本地TCP或UDP端口,它用于把传入的分组指引到应该接收它们的应用程序。
一个端口上可能关联多个套接字,流式套接字的服务器上可能同时有监听套接字和连接套接字,它们都与一个TCP的端口号相关联;一个套接字一般只会关联一个唯一的本地端口号。
体现市民生活质量状况的指标---恩格尔系数,上海也从1995年的53.4%下降到了2003年的37.2%,虽然与恩格尔系数多在20%以下的发达国家相比仍有差距,但按照联合国粮农组织的划分,表明上海消费已开始进入富裕状态(联合国粮农组织曾依据恩格尔系数,将恩格尔系数在40%-50%定为小康水平的消费,20%-40%定为富裕状态的消费)。
端口和协议的关系:
TCP和UDP的端口号是独立使用的。
尽管售价不菲,但仍没挡住喜欢它的人来来往往。
这里有营业员们向顾客们示范着制作各种风格迥异的饰品,许多顾客也是学得不亦乐乎。
在现场,有上班族在里面精挑细选成品,有细心的小女孩在仔细盘算着用料和价钱,准备自己制作的原料。
可以想见,用本来稀奇的原料,加上别具匠心的制作,每一款成品都必是独一无二的。
而这也许正是自己制造所能带来最大的快乐吧。
3、在基于流式套接字的网络应用程序设计中,假设客户端以8字节-12字节-8字节-12字节的顺序交替发送数据给服务器,请思考,服务器的接收操作每次能够接收到多少字节的数据?
为什么?
据调查统计在对大学生进行店铺经营风格所考虑的因素问题调查中,发现有50%人选择了价格便宜些,有28%人选择服务热情些,有30%人选择店面装潢有个性,只有14%人选择新颖多样。
如图(1-5)所示服务器接收操作每次能够接收到的数据长度是不确定的,这是因为TCP传送数据的形态是没有间隔的字节流,数据接收仅与接收调用的时间和当前主机内核缓存中尚未提交应用程序的数据有关,与发送端发送多少次和TCP如何传送没有直接的关系,我们不能准确地预测一个特定的接收操作到底返回多少字节。
2、传统文化对大学生饰品消费的影响
(一)DIY手工艺品的“多样化”4.在服务器和客户的通信过程中,服务器是如何处理多个客户服务请求的呢?
1)如果是循环服务器,则服务器在与一个客户建立连接后,其他客户只能等待;当一个客户服务完之后,服务器才会接收另一个客户的服务请求;即循环服务器的通信流程中,蓝色的3个步骤是循环进行的;
2)如果是并发服务器,则当服务器与一个客户进行通信的过程中,可以同时接收其他客户的服务请求,并且服务器要为每一个客户创建一个从进程,在从进程中用新创建的套接字与客户交互;即并发服务器的通信流程中蓝色的3个步骤,在与多个客户通信时,是并发执行的;
5.为什么客户端没有bind,而服务器端需要?
客户端是主动连接,而服务器是等待连接,因此服务器必须需要绑定IP地址和端口号,而客户端不需要。
6.
7.创业首先要有“风险意识”,要能承受住风险和失败。
还要有责任感,要对公司、员工、投资者负责。
务实精神也必不可少,必须踏实做事;客户端的套接字如何获得端点地址?
2、Google网站www。
people。
com。
cn通过getsockname()函数能够获得套接字关联的本地端点地址
通过getpeername()函数能够获得套接字关联的远端端点地址
8.应用如何获知自己当前的主机地址和端口号?
通过getaddrinfo()函数获知