1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 集美大学计算机工程学院实训 集美大学计算机工程学院实验报告.doc

集美大学计算机工程学院实训 集美大学计算机工程学院实验报告.doc

时间:2018-09-22 06:03:47

相关推荐

集美大学计算机工程学院实训 集美大学计算机工程学院实验报告.doc

文档介绍:

集美大学计算机工程学院实验报告.doc集美大学计算机工程学院实验报告课程名称:TCP/IP协议分析与编程 班级:实验成绩:实验项目名称:基于重叠模型的通信程序学号:上机实践日期:-05-26设计实验项目编号:1()组号:1 上机实践时间:2学时一、 实验冃的了解基于重叠模型通信程序的编写,编译和执行二、 实验内容与设计思想编写Win32程序实现基于重叠模型的两台计算机之间的通信,要求编程实现服务器端与客户端之间双向数据传递。客户端向服务器端发送“请输出1000以内斐波那契数列”,服务器回应客户端给出结果。(斐波那契数列特征,F0二0,F1二1,Fn=F(n-l)+F(n-2),n>=2)三、 实验使用环境操作系统:MicrosoftWindowsXPSP2编程环境:VisualC++6.0实验步骤和调试过程源代码服务器端:#includewstdafx.hH#include"initsock.h"#inelude#include#defineBUFFER.SIZE1024ClnitSockinitSock;//为每个套节字创建一个_SOCKET_OBJ对欽typedefstruct_SOCKET_OBJSOCKETs;intnOutstandingOps;eptEx;监听套节字而言)//套节字句柄//记录此套节字上的SftI/O数量//eptEx的指针(仅对}SOCKETJDBJ,牛SOCKET_OBJ;//定义媛冲区对象buffer,记录重叠I/O的所有圧性typedefstruct_BUFFER_OBJintnOperation;#defineOP.ACCEPT1#defineOP.READ#defineOP.WRITE3//ept;听套节字而言)_BUFFER_OBJ*pNext;//eptEx接受的客户套节字(仅对监}BUFFERJDBJ,*PBUFFER_OBJ;HANDLEg_events[WSA„MAXIMUM_WAIT_EVENTS];//I/O事件句柄数组intg_nBufferCount;//上数组中有效句柄数OVERLAPPEDol;char*buff;intnLen;II重■结构IIsend/recv/AcceptEx所使用的媛冲区//buff的长度PSOCKET.OBJpSocket;//此I/O所属的套节字对象PBUFFER^OBJg_pBufferHead,g__pBufferTail;//记录媛冲区对象组成的表的地址PSOCKETJDBJGetSocketObj(SOCKETs){PSOCKET_OBJpSocket=(PSOCKET^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对象的函数,每次调用fiftI/O函数前At要申请PBUFFER.OBJGetBufferObj(PSOCKET_OBJpSocket,ULONGnLen){if(g^nBufferCount>WSA_MAXIMUM_WAIT_EVENTS-1)returnNULL;PBUFFERJDBJpBuffer=(PBUFFER_OBJ)::GlobalAlloc(GPTR,sizeof(BUFFER_OBJ));if(pBuffer!=NULL){pBuffer->buff=(char*)::GlobalAlloc(GPTR,nLen);pBuffer->ol.hEvent=::WSACreateEvent();pBuffer->pSocket=pSocket;pBuffer->ept=INVALID.SOCKET;//将新的BUFFERJDBJ添加到列表中if(gjDBufferHead==NULL)gj^BufferHead=gj5BufferTail=pBuffer;}elseg_pBufferTail->pNext=pBuffer;g^pBufferTall=pBuffer;}g_events[++g_nBufferCount]=pBuffer->ol.hEvent;}returnpBuffer;}//释放_BUFFER_OBJ对象的函数voidFreeBufferObj(PBUFFER^OBJpBuffer){//从列表中移除BUFFER_OBJ对象PBUFFER_OBJpTes

内容来自淘豆网转载请标明出处.

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。