欢迎来到天天文库
浏览记录
ID:20864802
大小:135.50 KB
页数:18页
时间:2018-10-17
《基于重叠模型的通信程序设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、集美大学计算机工程学院实验报告课程名称:TCP/IP协议分析与编程班级:实验成绩:上机实践日期:2016-05-26上机实践时间:2学时实验项目名称:基于重叠模型的通信程序学号:设计实验项目编号:10组号:1一、实验目的了解基于重叠模型通信程序的编写,编译和执行二、实验内容与设计思想编写Win32程序实现基于重叠模型的阿台计算机之问的通信,要求编程实现服务器端与客户端之间双向数据传递。客户端向服务器端发送“请输出1000以内斐波那契数列”,服务器冋应客户端给出结果。(斐波那契数列特征,F0=0,Fl=l,Fn=F(n-l)+F(n-2),n>=2)三、实验使用环境操作系统:Micr
2、osoftWindowsXPSP2编程环境:VisualC++6.0四、实验步骤和调试过程源代码服务器端:include"stdafx.h"#include"initsock.h"#include#include#defineBUFFER_SIZE1024ClnitSockinitSock;//为每个套节字创建一t_SOCKET_OBJ对象typedefstruct_SOCKET_OBJ{SOCKETs;II套节字句柄intnOutstandingOps;//记录此套节字上的重叠I/O数量LPFN_ACCEPTEXIpfnAcceptEx;I
3、I扩展函数AcceptEx的指针(仅对监听套节字而言)}SOCKET_OBJ,*PSOCKET一OBJ;//定义缓冲区对象buffer,记录重叠I/O的所有属性typedefstruct_BUFFER_OBJ{OVERLAPPEDol;//重叠结构char*buff;IIsend/recv/AcceptEx所使用的缓冲区intnLen;//buff的长度PSOCKETJDBJpSocket;//此I/O所属的套节字对象intnOperation;//提交的操作类型#defineOP_ACCEPT1#defineOP_READ2#defineOP_WRITE3SOCKETsAccep
4、t;//用来保存AcceptEx接受的客户套节字(仅对监听套节字而言)_BUFFER_OBJ*pNext;}BUFFER_OBJ,*PBUFFER_OBJ;HANDLEg_events[WSA—MAXIMUM—WAIT_EVENTS】;//I/O事件句柄数组intg_nBufferCount;//上数组中有效句柄数PBUFFER_OBJg_pBufferHead,g_pBufferTail;//记录缓冲区对象组成的表的地址//申请套节字对象和释放套节字对象的函数PSOCKET_OBJGetSocketObj(SOCKETs){PSOCKET_OBJpSocket=(PSOCKET_
5、OBJ)::GlobalAlloc(GPTR,sizeof(SOCKET_OBJ));if(pSocket!=NULL)pSocket->s=s;}returnpSocket;}voidFreeSocketObj(PSOCKET一OBJpSocket){if(pSocket->s!=INVALID-SOCKET)::closesocket(pSocket->s):::GlobalFree(pSocket);}//申请_BUFFER_OBJ对象的函数,每次调用重ftI/O函数前需要申请PBUFFER_OBJGetBufferObj(PSOCKET—OBJpSocket,ULONGnL
6、en)if(g_nBufferCount>WSA—MAXIMUM—WAIT_EVENTS-1)returnNULL;PBUFFER_OBJpBuffer=(PBUFFER_OBJ)::GlobalAlloc(GPTR,sizeof(BUFFER_OBJ));if(pBuffer!=NULL){pBuffer->buff=(char*)::GlobalAlloc(GPTR,nLen);pBuffer->ol.hEvent=::WSACreateEvent():pBuffer->pSocket=pSocket;pBuffer->sAccept=INVALID.SOCKET;//将新的B
7、UFFER_OBJ添加到列表中if(g_pBufferHead==NULL){g_pBufferHead=g_pBufferTail=pBuffer;}elseg_pBufferTail->pNext=pBuffer;g一pBufferTail=pBuffer;}g_events[++g_nBufferCount]=pBuffer->ol.hEvent;}returnpBuffer;}//释放_BUFFER_OBJ对象的函数voidFreeBufferObj(PBUF
此文档下载收益归作者所有