欢迎来到天天文库
浏览记录
ID:19299073
大小:102.00 KB
页数:15页
时间:2018-09-30
《基于iocp模型的通信程序设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验6基于IOCP模型的通信程序设计一.实验目的:1.掌握IOCP模型下的多线程服务器及客户端设计2、掌握socket通信中接收数据时包处理的方法(粘连包处理)及发送数据的处理方法二.实验内容1.设计一个IOCP模型的TCP协议的服务和客户端,实现聊天室程序三.实验要求1.写出程序,并调试程序,要给出测试数据和实验结果。2.整理上机步骤,总结经验和体会。3.完成实验报告和上交程序。 四实验步骤1、实现Winsock库文件的装入和释放;2、封装CInitSock类,为了每次写网络程序都可以方便的装载和释放Winsock库;3、建立一个基于对话框的M
2、FC工程;4、将控件拖放到合适的位置,绘制一个简易界面;5、用IDE实现控件相关的函数和类;6、设计和编程是实现线程类;7、设计和编码实现重叠IO模型的包管理类;8、设计和编码实现内存管理类;9、设计和编码实现业务类10、自定义协议;11、实现简易的基于IOCP模型的服务器;五实验代码#pragmaonce#include"Business.h"#include#include"OverlapPacketManager.h"#include"SocketManager.h"classCIOCP{public:voidPrin
3、tState();voidProcessPacket(COvlapSocket*pSocket,OVERLAP_PACKET*pPacket,DWORDdwTrans,BOOLbOK);BOOLPostSend(COvlapSocket*pSocket,OVERLAP_PACKET*pPacket);BOOLPostRecv(COvlapSocket*pSocket,OVERLAP_PACKET*pPacket);BOOLPostAccept(OVERLAP_PACKET*pPacket);voidShutdown();BOOLStart(CBu
4、siness*pBusiness,char*pcIP="127.0.0.1",intnPort=4567,intnMaxConnections=2000,intnMaxFreeBuffers=200,intnInitialReads=4);CIOCP();virtual~CIOCP();CBusiness*m_pBusiness;//业务对象COverlapPacketManagerm_PacketManager;CSocketManagerm_SocketManager;private:voidProcessSocketError(COvlap
5、Socket*pSocket,char*pPosition);voidProcessAcceptPacket(OVERLAP_PACKET*pPacket);charm_strIP[20];intm_iPort;HANDLEm_hCompletion;HANDLEm_hWorkingThreadHandle;//服务线程句柄HANDLEm_hSocketmanagehandle;//套接字连接管理线程BOOLm_bServerStarted;BOOLm_bShutDown;intm_nMaxSends;SOCKETm_sListen;//监听套接
6、字句柄LPFN_ACCEPTEXm_lpfnAcceptEx;//AcceptEx函数地址LPFN_GETACCEPTEXSOCKADDRSm_lpfnGetAcceptExSockaddrs;//GetAcceptExSockaddrs函数地址staticDWORDWINAPIWorkingThreadProc(LPVOIDlpParam);};//IOCP.cpp:implementationoftheCIOCPclass.////////////////////////////////////////////////////////////
7、////////////#include"stdafx.h"#include"IOCP.h"#include"mstcpip.h"#pragmacomment(lib,"WS2_32.lib")#ifdef_DEBUG#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#definenewDEBUG_NEW#endif#defineLISTEN_SOCKET_COMPLITION_KEY0//监听套接字的ComplitionKey#defineCOMPLITION_QUIT_MSG_TRANS-1//通知退
8、出完成端口消息#defineOVERLAP_TIMEOUT1000000//超时时间24小时86400000externboolg_bD
此文档下载收益归作者所有