预览加载中,请您耐心等待几秒...
在线预览结束,喜欢就下载吧,查找使用更方便
如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
并发套接字编程课程设计报告姓名:王延兴班级:9班学号:_____班级:11级9班学号:_____姓名:王延兴一、设计任务分析(一)实验环境操作系统:Windows或Linu_编程工具及集成开发环境:VC+(二)实验目的和要求实验目的:掌握Linu_或Windows平台上多线程、多进程或异步的套接字编程。实验要求:(1)在Windows上,编写、编译1个客户机端程序和1个服务器端程序。要求客户机端程序能发送请求给服务器端程序,服务器端程序收到后能发送本机时间给客户机端程序。(2)在相同或不同机子上,先运行服务器端程序可执行文件,后运行客户机端程序可执行文件。可选内容:(1)编写Linu_或Windows平台上采取各并发方式的1种程序。(2)测试多线程、多进程或异步的性能。2、设计方案本实验采用的多线程的编程方式实现了并发u各个函数功能:DWORDWINAPIClientThread(LPVOIDlpParameter)接收每个客户端连接的处理函数hThread=CreateThread(NULL,0,ClientThread,(LPVOID)CientSocket,0,NULL);创建进程send(CientSocket,tmp,(int)strlen(tmp),0);发送数据recv(CientSocket,RecvBuffer,MA__ATH,0);接收数据WSAStartup(MAKEWORD(2,2),Ws)初始化套接字类库socket(AF_NET,SOCK_TREAM,IPPROTO_CP);创建套接字bind(ServerSocket,(structsockaddr_)LocalAddr,sizeof(LocalAddr);绑定套接字listen(ServerSocket,10);侦听,队列大小为10u设计思想:创建TCP并发服务器3、详细设计服务器:详细代码ulthreadServer.cpp:Definestheentrypointfortheconsoleapplicationincludestdaf_.h#include#include#pragmacomment(lib,ws2.lib)usingnamespacestd;#include#include#definePORT4000#defineIP_DDRESS17.0.0.1DWORDWINAPIClientThread(LPVOIDlpParameter收每个客户端连接的处理函数SOCKETCientSocket=(SOCKET)lpParameter;intRet=0;charRecvBufferMA__ATHVC+6.0中,MA__ATH的值为260。time_t=time(0);chartmp64;strftime(tmp,sizeof(tmp),%d%_%A本年第%j天%z,localtime(t));Ret=send(CientSocket,tmp,(int)strlen(tmp),0);if(Ret=SOCKET_RROR)coutSendInfoErrorendl;while(true)memset(RecvBuffer,0_00,sizeof(RecvBuffer)新申请的内存做初始化工作,其返回值为指向RecvBuffer的指针。Ret=recv(CientSocket,RecvBuffer,MA__ATH,0);if(Ret=0|Ret=SOCKET_RROR)cout客户端退出!endl;closesocket(CientSocket)客户端套接字break;cout接收到客户信息为:RecvBufferendl;return0;intmain(intargc,char_argv)WSADATAWs;SOCKETServerSocket,CientSocket;structsockaddr_nLocalAddr,ClientAddr;intRet=0;intAddrLen=0;HANDLEhThread=NULLnitWindowsSocketif(WSAStartup(MAKEWORD(2,2),Ws)!=0)coutInitWindowsSocketFailed:GetLastErrorendl;return-1reateSocketServerSocket=socket(AF_NET,SOCK_TREAM,IPPROTO_CP);if(ServerSocket=INVALID_OCKET)coutCreateSocketFailed:GetLastErrorendl;return-1;LocalAddr.sin_amily=AF_NET;LocalAddr.sin_ddr.s_ddr=inet_ddr(IP_DDR