写了很多socket了,很少关注socket的第一步

#define WIN32_LEAN_AND_MEAN#include <windows.h>
#include <winsock2.h>
#include <ws2tcpip.h>
#include <stdio.h>// Need to link with Ws2_32.lib
#pragma comment(lib, "ws2_32.lib")int __cdecl main()
{WORD wVersionRequested;WSADATA wsaData;int err;/* Use the MAKEWORD(lowbyte, highbyte) macro declared in Windef.h */wVersionRequested = MAKEWORD(2, 2);err = WSAStartup(wVersionRequested, &wsaData);if (err != 0) {/* Tell the user that we could not find a usable *//* Winsock DLL.                                  */printf("WSAStartup failed with error: %d\n", err);return 1;}/* Confirm that the WinSock DLL supports 2.2.*/
/* Note that if the DLL supports versions greater    */
/* than 2.2 in addition to 2.2, it will still return */
/* 2.2 in wVersion since that is the version we      */
/* requested.                                        */if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) {/* Tell the user that we could not find a usable *//* WinSock DLL.                                  */printf("Could not find a usable version of Winsock.dll\n");WSACleanup();return 1;}elseprintf("The Winsock 2.2 dll was found okay\n");/* The Winsock DLL is acceptable. Proceed to use it. *//* Add network programming using Winsock here *//* then call WSACleanup when done using the Winsock dll */WSACleanup();}

其实这段代码也不用过多关注。

WSAStartup入手:

int WSAStartup(WORD      wVersionRequired,LPWSADATA lpWSAData
);

该 调用WSAStartup函数初始化了一个进程使用Winsock DLL的使用信息

第一个参数不用关注。

typedef struct WSAData {WORD           wVersion;WORD           wHighVersion;
} WSADATA;

该 WSADATA结构包含在Windows Sockets实现信息。其他字段只是为了兼容版本。再socket2之后已经只有这两个字段有意义了。就是制定soocket的版本号。

一旦应用程序或DLL成功进行了 WSAStartup调用,它就可以根据需要继续进行其他Windows套接字调用。完成使用Winsock DLL的服务后,应用程序必须调用 WSACleanup,以允许Winsock DLL释放应用程序使用的内部Winsock资源。

在每次成功调用WSAStartup函数时,应用程序都必须调用WSACleanup函数。举例来说,这意味着如果一个应用程序调用 WSAStartup 3次,则它必须调用 WSACleanup 3次。对WSACleanup的前两个调用 除了减少内部计数器外没有任何作用。该任务的最后 WSACleanup调用完成了该任务的所有必要资源重新分配。

winSocket第一步WSAStartup相关推荐

  1. 使用myeclipse的第一步

    使用myeclipse的第一步 将以下代码copy放在一个包中运行,然后在控制台输入任意字符,回车,然后控制台打印一串密匙,这里你输入的就是账号,控制台返回的就是注册码,点击MyEclipse-> ...

  2. python安装包_迈出Python学习第一步:Python开发环境的下载与安装

    所谓"磨刀不误砍柴工"."工欲善其事,必先利其器",都在告诉我们一个道理:要做好一个事情,事先做好充分的准备工作是非常重要的.所以在我们正式学习用Python编 ...

  3. ecshop入门第一步,替换ecshop模板的显示图片

    所有的都是模范默认模板来制作,所以应该参考默认模板的一些数据设置 1.找到themes\default\images文件夹下 screenshot.png 图片 默认如下: 在你的模板文件夹下新建一个 ...

  4. python采集第一步

    2019独角兽企业重金招聘Python工程师标准>>> 上次说要做一个http://www.m4493.com/的美女站点,需要使用python进行数据采集 接下来我们就开始采集数据 ...

  5. 初学架构设计的第一步:需求、愿景与架构

    初学架构设计的第一步:需求.愿景与架构 了解<需求>.<愿景>与<架构>三者的关系.也就是<需求分析>.<观想愿景>与<架构设计> ...

  6. 使用html测试数据库连接与操作(含界面) 第一步界面设计

    前面写的那篇文章,只是实现了页面刷新就读取数据库的过程,还不能有人工干预,还不像一个正式的东东,这可能和我以前写c#养成的习惯似的,总想弄的完美点,第一步先吧界面弄出来,说实话,具体怎么通过按钮出发p ...

  7. php内容采集系统,第一步、采集规则

    采集第一步工作是设置目标网站的采集规则 先确定采集哪一个目标网站,我们用 腾讯科技频道为例:http://tech.qq.com/all/newtech.htm 一.列表采集规则 1.设置采集规则和编 ...

  8. 程序员失业第一步?斯坦福研究员用AI从编译器反馈中学习改Bug

    来源:AI科技评论 本文约2700字,建议阅读10分钟 本文介绍了来自斯坦福大学的两位研究员研究了如何使用AI来自动修复程序,以期未来程序修复自动化可以大大提高编程和学习编程的效率. 众所周知,程序员 ...

  9. SAP WM LT15不能取消二步法确认场景中只做过第一步确认的TO单

    SAP WM LT15不能取消二步法确认场景中只做过第一步确认的TO单 1,如下TO 需要2步法确认,TO#3000006418 看其确认状态时黄色三角形状态,说明第一步确认(LT1D)已经被业务人员 ...

最新文章

  1. 计算机应用技术挂科率高吗,大学里“挂科率高”的专业,学霸也觉得吃力,填报志愿要慎重...
  2. getDay()显示的是本周的第几天
  3. mysql数据库保存中文乱码解决参考方案
  4. 理解SetCapture、ReleaseCapture、GetCapture(控制了消息发往哪个窗口,是理解消息的关键)
  5. create-react-app 配置sass
  6. 解决ArcGIS 9.3卸载时出现invalid install.log file的方法
  7. 解决比特币双重支付问题
  8. VTK图形模型主要对象
  9. Tpos时间定位表达式
  10. C++ 原子操作 std::atomic<int>
  11. 如何将 Java 项目转换成 Maven 项目
  12. 菜鸟教程html5常用标签,HTML5 Canvas | w3cschool菜鸟教程
  13. php开发幸运大转盘,jQuery幸运大转盘_jQuery+PHP抽奖程序
  14. Java集合框架中隐藏的设计套路
  15. 中国互联网办公地变迁史:你的公司为什么也搬家了?
  16. IAR For ARM 历史版本下载链接
  17. 蒙特卡洛python求解派_Python实现蒙特卡罗方法
  18. 点燃我,温暖你,李峋同款爱心代码!
  19. All flavors must now belong to a named flavor dimension.
  20. Java - 学习资料

热门文章

  1. 很有意思的十句话,说说背后的故事。
  2. 关于DOCX XML
  3. 如何理解最小相位信号就是振幅谱相同的信号中群延迟最小的那个?
  4. 虚拟机VMware中Linux联网
  5. 泰森多边形(Voronoi彩图)的matlab绘制——2
  6. 小米电脑重装系统后亮度无法调节的解决办法
  7. 基于C#实现的在线聊天室的桌面系统软件
  8. 杂项:MIME(多用途互联网邮件扩展类型)百科
  9. 计算机体系结构——1.1 计算机体系结构的概念与发展
  10. IC测试原理-存储器测试