2.1.2 小试牛刀--模拟实现Windows的TCP程序(2)
3. 设计数据结构
(1) 服务器端的全局变量如下:
- /*定义全局变量*/
- char *hostName;
- unsigned short maxService;
- unsigned short port;
(2) 客户端的全局变量如下:- /*定义全局变量*/
- unsigned short port;
- char *hostName;
4. 规划函数
(1) 服务器端。服务器端的构成函数如下。
intial():用于初始化服务器端的全局变量。
InitSockets():用于初始化Winsock。
GetArgments():用于获取用户提供的选项。
ErrorPrint():用于输出错误信息。
LoopControl():实现循环控制,当服务器次数在指定范围内时,将接收客户端请求,并创建一个线程为客户端服务。
Service():用于服务客户端。
(2) 客户端。客户端的构成函数如下。
InitSockets():用于初始化Winsock。
GetArgment():用于获取用户提供的选项。
ErrorPrint():用于输出错误信息。
5. 具体编码
(1) 服务器端编码
① 预处理
预处理包括文件导入、头文件加载、定义常量、定义变量等操作。具体代码如下:
- /*导入库文件*/
- #pragma comment(lib, "wsock32.lib")
- /*加载头文件*/
- #include <stdio.h>
- #include <winsock2.h>
- /*自定义函数原型*/
- void initial();
- int InitSockets(void);
-
- void GetArgments(int argc, char **argv);
- void ErrorPrint(x);
- void userHelp();
-
- int LoopControl(SOCKET listenfd, int isMultiTasking);
-
- void Service(LPVOID lpv);
-
- /*定义常量*/
- #define MAX_SER 10
- /*定义全局变量*/
- char *hostName;
- unsigned short maxService;
- unsigned short port;