基于重叠模型的通信程序设计

基于重叠模型的通信程序设计

ID:20864802

大小:135.50 KB

页数:18页

时间:2018-10-17

基于重叠模型的通信程序设计_第1页
基于重叠模型的通信程序设计_第2页
基于重叠模型的通信程序设计_第3页
基于重叠模型的通信程序设计_第4页
基于重叠模型的通信程序设计_第5页
资源描述:

《基于重叠模型的通信程序设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

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

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

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

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