集美大学计算机工程学院实验报告课程名称 :TCP/IP 协议与通信程序设计班级 :实验成绩 :实验项目名称 :基于 WSAAsyncSelect模型的通信程序设计学号 :上机实践日期 :2016-05-12实验项目编号 :08组号 :1上机实践时间 :2 学时一、实验目的了解基于 WSAAsyncSelect 模型通信程序的编写,编译和执行二、实验内容与设计思想编写 Win32 程序模拟实现基于WSAAsyncSelect 模型的两台计算机之间的通信,要求编程实现服务器端与客户端之间双向数据传递。客户端向服务器端发送“请输出从1 到 1000 内所有的质数”,服务器回应客户端给出结果。三、实验使用环境操作系统:Microsoft Windows XP SP2 编程环境: Visual C++ 6.0四、实验步骤和调试过程源代码:服务器端:#include #include #pragma comment(lib, "WS2_32") // 链接到 WS2_32.lib #include #define WM_SOCKET WM_USER + 101 // 自定义消息class CInitSock { public: CInitSock(BYTE minorVer = 2, BYTE majorVer = 2) { // 初始化 WS2_32.dll WSADATA wsaData; WORD sockVersion = MAKEWORD(minorVer, majorVer); if(::WSAStartup(sockVersion, &wsaData) != 0) return; } ~CInitSock() { ::WSACleanup(); } }; CInitSock theSock; //加载套接字库LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); bool isprime(int p){//判断 p 是否为质数int sq=(int)sqrt(p); bool flag=true; int i; for(i=2;i<=sq;i++){ if(p%i==0){ flag=false; break; } } if(!flag&&i<=sq) return false; else return true; }; char * getallprime(int n){ //将 num 以内的所有质数放在同一字符串中char szprime[4096] = "质数: " ; int len=strlen(szprime)+strlen(","); for(int i=2 ; i <= n ; i++ ){ if(isprime(i)){ char sznum[10]; itoa(i,sznum,10); char * sztemp=strcat(szprime,sznum); len+=strlen(sznum); szprime[len-1]=','; len+=strlen(","); } } //printf("%s\n",szprime); return szprime; }; int main() { char szClassName[] = "MainWClass"; WNDCLASSEX wndclass; // 用描述主窗口的参数填充WNDCLASSEX 结构wndclass.cbSize = sizeof(wndclass)...