设为首页 加入收藏

TOP

2.1.2 小试牛刀--模拟实现Windows的TCP程序(3)
2013-10-07 15:53:54 来源: 作者: 【 】 浏览:84
Tags:2.1.2 小试牛刀 模拟 实现 Windows TCP 程序

2.1.2  小试牛刀--模拟实现Windows的TCP程序(3)

② 初始化模块

此处的初始化分为全局变量初始化和Winsock初始化两部分,分别通过如下两个函数来实现:

initial():用于初始化全局变量,通过设置hostName="127.0.0.1",说明程序运行时仅限定客户端和服务器在同一台机器上。

InitSockets(void):用于初始化Winsock。

对应的代码如下:

  1. /*初始化全局变量函数*/  
  2. void initial()  
  3. {  
  4. hostName = "127.0.0.1";  
  5. maxService = 3;  
  6. port = 9999;  
  7. }  
  8.  
  9. /*初始化Winsocket函数*/  
  10. int InitSockets(void)  
  11. {  
  12. WSADATA wsaData;  
  13. WORD sockVersion;  
  14. int err;  
  15.  
  16. /*设置Winsock版本号*/  
  17. sockVersion = MAKEWORD(2, 2);  
  18. /*初始化Winsock*/  
  19. err = WSAStartup(sockVersion, &wsaData);  
  20. /*如果初始化失败*/  
  21. if (err != 0)  
  22. {  
  23. printf("Error %d: Winsock not available\n", err);  
  24. return 1;  
  25. }  
  26. return 0;  
  27. }  

③ 功能控制模块

此模块提供了参数获取、错误输出和用户帮助等功能,上述功能分别通过如下3个函数实现:

GetArgments:用于获取用户提供的选项值。

ErrorPrint:用于输出错误。

userHelp:用于输出帮助信息。

对应的实现代码如下:

  1. /*获取选项函数*/  
  2. void GetArgments(int argc, char **argv)  
  3. {  
  4. int i;  
  5. for(i=1; i<argc; i++)  
  6. {  
  7. /*参数的第一个字符若是“-”*/  
  8. if (argv[i][0] == '-')  
  9. {  
  10. /*转换成小写*/  
  11. switch (tolower(argv[i][1]))  
  12. {  
  13. /*若是端口号*/  
  14. case 'p':   
  15. if (strlen(argv[i]) > 3)  
  16. port = atoi(&argv[i][3]);  
  17. break;  
  18. /*若是主机名*/  
  19. case 'h':   
  20. hostName = &argv[i][3];  
  21. break;  
  22. /*最多服务次数*/  
  23. case 'n':   
  24. maxService = atoi(&argv[i][3]);  
  25. break;  
  26. /*其他情况*/  
  27. default:  
  28. userHelp();  
  29. break;  
  30. }  
  31. }  
  32. }  
  33. return;  
  34. }  
  35.  
  36. /*错误输出函数*/  
  37. void ErrorPrint(x)  
  38. {   
  39. printf("Error %d: %s\n", WSAGetLastError(), x);  
  40. }  
  41.  
  42. /*用户帮助函数*/  
  43. void userHelp()  
  44. {  
  45. printf("userHelp:  -h:str -p:int -n:int\n");  
  46. printf("           -h:str  The host name \n");  
  47. printf("                   The default host is 127.0.0.1\n");  
  48. printf("           -p:int  The Port number to use\n");  
  49. printf("                   The default port is 9999\n");  
  50. printf("           -n:int  The number of service,below MAX_SER \n");  
  51. printf("                   The default number is 3\n");  
  52. ExitProcess(-1);  
  53. }  

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇2.1.2 小试牛刀--模拟实现Windows.. 下一篇2.1.2 小试牛刀--模拟实现Windows..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C++中智能指针的性能 (2025-12-25 03:49:29)
·如何用智能指针实现c (2025-12-25 03:49:27)
·如何在 C 语言中管理 (2025-12-25 03:20:14)
·C语言和内存管理有什 (2025-12-25 03:20:11)
·为什么C语言从不被淘 (2025-12-25 03:20:08)