欢迎来到天天文库
浏览记录
ID:20946053
大小:1010.50 KB
页数:26页
时间:2018-10-18
《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
此文档下载收益归作者所有