并发套接字编程课程设计报告 姓名:王延兴班级: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,ws 2.lib)usingnamespacestd;#include#include#definePORT4000#defineIP_DDRESS1 7.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,...