资源描述:
《《并发套接字编程》课程设计报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《并发套接字编程》课程设计报告姓名:王延兴班级:9班学号:541109049《并发套接字编程》课程设计报告班级:11级9班学号:54110904姓名:王延兴一、设计任务分析(一)实验环境操作系统:Windows或Linux编程工具及集成开发环境:VC++(二)实验目的和要求实验目的:掌握Linux或Windows平台上多线程、多进程或异步I/O的套接字编程。实验要求:(1)在Windows上,编写、编译1个客户机端程序和1个服务器端程序。要求客户机端程序能发送请求给服务器端程序,服务器端程序收到
2、后能发送本机时间给客户机端程序。(2)在相同或不同机子上,先运行服务器端程序可执行文件,后运行客户机端程序可执行文件。可选内容:(1)编写Linux或Windows平台上采取各并发方式的1种程序。(2)测试多线程、多进程或异步I/O的性能。二、设计方案本实验采用的多线程的编程方式实现了并发u各个函数功能:9DWORDWINAPIClientThread(LPVOIDlpParameter)接收每个客户端连接的处理函数hThread=CreateThread(NULL,0,ClientThread
3、,(LPVOID)CientSocket,0,NULL);创建进程send(CientSocket,tmp,(int)strlen(tmp),0);发送数据recv(CientSocket,RecvBuffer,MAX_PATH,0);接收数据WSAStartup(MAKEWORD(2,2),&Ws)初始化套接字类库socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);创建套接字bind(ServerSocket,(structsockaddr*)&LocalAddr,
4、sizeof(LocalAddr));绑定套接字listen(ServerSocket,10);侦听,队列大小为10u设计思想:创建TCP并发服务器三、详细设计服务器:详细代码://multhreadServer.cpp:Definestheentrypointfortheconsoleapplication.//#include"stdafx.h"#include#include#pragmacomment(lib,"ws2_32.lib")using
5、namespacestd;#include#include#definePORT4000#defineIP_ADDRESS"127.0.0.1"DWORDWINAPIClientThread(LPVOIDlpParameter)//接收每个客户端连接的处理函数{SOCKETCientSocket=(SOCKET)lpParameter;intRet=0;charRecvBuffer[MAX_PATH];//在VC++6.0中,MAX_PATH的值为260。
6、time_tt=time(0);chartmp[64];strftime(tmp,sizeof(tmp),"%Y/%m/%d%X%A本年第%j天%z",localtime(&t));Ret=send(CientSocket,tmp,(int)strlen(tmp),0);if(Ret==SOCKET_ERROR){cout<<"SendInfoError"<7、内存做初始化工作,其返回值为指向RecvBuffer的指针。Ret=recv(CientSocket,RecvBuffer,MAX_PATH,0);if(Ret==0
8、
9、Ret==SOCKET_ERROR){cout<<"客户端退出!"<10、s;SOCKETServerSocket,CientSocket;structsockaddr_inLocalAddr,ClientAddr;intRet=0;intAddrLen=0;HANDLEhThread=NULL;//InitWindowsSocketif(WSAStartup(MAKEWORD(2,2),&Ws)!=0){cout<<"InitWindowsSocketFailed::"<