window网络与通信程序设计试题

window网络与通信程序设计试题

ID:20946053

大小:1010.50 KB

页数:26页

时间:2018-10-18

window网络与通信程序设计试题_第1页
window网络与通信程序设计试题_第2页
window网络与通信程序设计试题_第3页
window网络与通信程序设计试题_第4页
window网络与通信程序设计试题_第5页
资源描述:

《window网络与通信程序设计试题》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、作业11、使用API函数描述基于TCP的服务器和客户端程序的基本流程。Server:WSAStartup()socket()bind()listen()accept()recv()/send()closesocket()WSACleanup()Client:WSAStartup()socket()connect()send()/recv()closesocket()WSACleanup()2021/7/412、调用connect()时触发什么过程?UDP编程时可否调用connect(),为什么?A:触发三次握手过程。UDP编程时可以调用connect()

2、,因为在数据报套接字上调用connect(),不会触发三次握手过程,操作系统仅仅将连接地址保存后直接返回,后续调用sendto()时可以不填入目标地址。2021/7/423、UDP通信时需要将收到的信息回送给对方该怎么处理?给出实现代码。charrecvbuf[256];intrecvbytes,sendbytes;sockaddr_inaddr;intlen=sizeof(addr);recvbytes=recvfrom(s,recvbuf,256,0,(sockaddr*)&addr,&len);sendbytes=sendto(s,recvbuf,

3、strlen(recvbuf),0,(sockaddr*)&addr,len);//判断返回值2021/7/434、调用recvfrom()之前是否必须显式绑定?为什么?A:不一定需要显式绑定。如果在调用recvfrom()之前调用了sendto()则可以不显式绑定。2021/7/445、4个数据收发函数可否都在TCP和UDP通信中使用?请比较使用时注意事项。A:都可以。(1)sendto()和recvfrom()在UDP通信中以及send()和recv()在TCP通信中按照常规使用方式。(2)send()在UDP通信中需先调用connect();rec

4、v()在UDP通信中需先调用bind()。(3)sendto()和recvfrom()在TCP通信中,只需将后两个参数设为0即可。2021/7/45作业2从以下方面比较WSAAsyncSelect模型和WSAEventSelect模型的异同。1、能处理的网络事件类型2、得到网络事件通知的途径3、单线程能处理的套接字个数4、判断网络事件类型和网络错误方法5、触发FD_READ和FD_WRITE的条件(具体说明)2021/7/461、能处理的网络事件类型相同,常用网络事件包括FD_ACCEPT、FD_READ、FD_WRITE、FD_CLOSE等2、得到网络

5、事件通知的途径不同。WSAAsyncSelect模型由操作系统捕获网络事件并封装成WINDWOS消息,发送到窗口程序的消息队列中,应用程序从其消息队列中取出消息从而获得网络事件通知;而WSAEventSelect模型是通过等待关联的事件状态变化来获取事件通知。3、单线程能处理的套接字个数不同,WSAEventSelect模型为64,WSAAsyncSelect模型没有限制。2021/7/474、判断网络事件类型和网络错误方法不同。WSAEventSelect模型通过调用WSAEnumNetworkEvents()函数传入的指向WSANETWORKEVEN

6、TS结构体的指针lpNetworkEvents来返回网络网络事件和错误代码。if(lpNetworkEvents->lNetworkEvents&FD_***),则表示发生了对应的网络事件;if(lpNetworkEvents->iErrorCode[FD_***_BIT]!=0)表示发生了网络错误。2021/7/48WSAAsyncSelect模型通过MSG的附加信息来判断网络事件和网络错误。wParam指定发生网络事件的套接字句柄LParam指定发生的网络事件和错误代码。其中高字位指出网络错误。采用宏:if(WSAGETSELECTERROR(lPa

7、ram)表示发生网络错误低字位指出发生的网络事件,采用宏:if(WSAGETSELECTEVENT(lParam)==FD_***)表示发生对应的网络事件。2021/7/495、触发FD_READ和FD_WRITE的条件(具体说明)收到FD_READ事件通知的情况:(1)调用WSAAsyncSelect()对socket注册FD_READ事件时,接收缓冲区中已有数据。(2)接收缓冲区由空变为有数据(3)调用recv()或recvfrom()从接收缓冲区读取数据时没有读完。2021/7/410收到FD_WRITE事件通知的情况:使用connect或WSAC

8、onnect,一个套接字首次建立了连接。(针对客户端)使用accept或WSAA

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。