Windows平台VC++ 6.0 下的网络编程学习 - 简单的测试winsock.h头文件
最近学习数据结构和算法学得有点累了(貌似也没那么累...)...找了本网络编程翻了翻当做打一个小基础吧,打算一边继续学习数据结构一边也看看网络编程相关的...
简单的第一次尝试,就大致梳理一下看书+自己理解的东西。
1.首先是对Winsock的一点介绍:Winsock是一种标准的API(应用程序编程接口),主要用于网络中的数据通信,它允许两个应用程序在同一台机器上或通过网络相互通信。需要注意的是Winsock和协议无关,使用Winsock编程接口,应用程序可通过普通网络协议如:TCP/IP(网络通讯协议)或IPX(互联网数据包交换协议)协议建立通信。
2.然后是VC++6.0下网络编程的工程项目的基本创建,先贴一段代码:
#include <winsock2.h>
#include <stdio.h> void main()
{
WSADATA wsaData;//注释1
int Ret; //初始化winsock版本2.2
if((Ret = WSAStartup(MAKEWORD(2, 2), &wsaData)) != 0)
{
//如果winsock没有加载,调用WSAStartup()函数将会返回一个SOCKET_ERROR的错误代码
printf("WSAStartup failed with error %d\n", Ret);
return ;
} if(WSACleanup() == SOCKET_ERROR)
{ //WSACleanup()函数可以释放所有由winsock分配的资源,并取消这个应用程序挂起的winsock调用
printf("WSACleanup failed with error %d\n", WSAGetLastError());
}
}
因为该程序的主函数入口是main(),所以建立工程时应选择win32 Console Application,然后我们编写的是winsock2.h的应用程序,需要链接到WS2_32.LIB库;如果是winsock.h时,需要使用WSOCK32.LIB;如果是MSWSOCK.H(这个是用于微软专用编程扩展的)时,还需链接MSWSOCK.DLL。(以上除DLL文件外都在VC++6.0 中的 project -> setting -> link 中的 Object/library modules:栏中添加即可,补充:用code blocks编写网络程序也需要链接到libws2_32.a、libwsock32.a库,位置在软件界面中的setting->compiler settings->Linker settings->Link libraries栏中添加)
上面代码中有个注释1,稍微解释一下:
初始化winsock时(也就是调用函数WSAStartup()加载winsock)用与加载的版本有关的信息和一个指向WSADATA结构的指针来填充该结构:
typedef struct WSAData {
WORD wVersion;
WORD wHighVersion;
char szDescription[WSADESCRIPTION_LEN + 1];
char szSystemStatus[WSASYS_STATUS_LEN + 1];
unsigned short iMaxSockets;
unsigned short iMaxUdpDg;
char FAR * lpVendorInfo;
}WSADATA, * LPWSADATA;
我们可以不太在意这个结构的具体细节,但至少应该知道怎么编写程序来填充它。如果想知道WSAData结构体中各个成员的含义和作用可以去看书《windows网络编程》第一章前面有很详细的解释。
最后,第一次的网络编程学习就先总结成这样了,我主要就是用一段错误处理的代码来测试头文件和了解如何开始编写网络编程的程序,有了简单的入门会清晰很多。个人感觉这篇总结还是有些许收获的。
Windows平台VC++ 6.0 下的网络编程学习 - 简单的测试winsock.h头文件的更多相关文章
- Linux下TCP网络编程与基于Windows下C#socket编程间通信
一.linux下TCP网络编程基础,需要了解相关函数 Socket():用于套接字初始化. Bind():将 socket 与本机上的一个端口绑定,就可以在该端口监听服务请求. Listen():使s ...
- VC++6.0 下配置 pthread库2010年12月12日 星期日 13:14VC下的pthread多线程编程 转载
VC++6.0 下配置 pthread库2010年12月12日 星期日 13:14VC下的pthread多线程编程 转载 #include <stdio.h>#include &l ...
- VC++ 6.0下OpengGL配置以及glut配置
转自:http://blog.sina.com.cn/s/blog_5f0cf7bd0100c9oa.html OpenGL官方网站(英文) http://www.opengl.org 下面我将对Wi ...
- VS2008和VC6.0下使用pthread.h头文件
原文:http://www.cppblog.com/liquidx/archive/2009/06/16/87811.html 要在windows环境下使用 #include <pthread. ...
- 与众不同 windows phone (37) - 8.0 文件系统: StorageFolder, StorageFile, 通过 Uri 引用文件, 获取 SD 卡中的文件
[源码下载] 与众不同 windows phone (37) - 8.0 文件系统: StorageFolder, StorageFile, 通过 Uri 引用文件, 获取 SD 卡中的文件 作者:w ...
- [转]Windows网络编程学习-面向连接的编程方式
直接附上原文链接:windows 网络编程学习-面向连接的编程方式
- 转:MFC网络编程学习
要学习好网路编程,主要看以下几个方面: 1.掌握概念,诸如:同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)等. 2.在实际Windows网络通信软件开发中,异步非阻 ...
- 《转》MFC网络编程学习
原地址:http://www.cnblogs.com/renyuan/archive/2013/06/04/3117006.html要学习好网路编程,主要看以下几个方面: 1.掌握概念,诸如:同步(S ...
- C,C++网络编程学习简明指南
C,C++网络编程学习简明指南 1. 扎实的C,C++基础知识 参考资料<C程序设计>,<C++ primer>. 2. TCP/IP协议 经典书是:W.Richard Ste ...
随机推荐
- python-第三方库的理解及某个函数的源代码
第三方库,是一个总称,里面有各个模块,而具体使用的函数是模块里的. 库包含多个模块, 每个模块里包含多个函数. import AAAA 就是引用AAAA这个库,这个库里的模块函数都可以用,只是 ...
- php商城数据库的设计 之无限分类
商品分类,使用无限分类 即: -------如何创建数据表 pid---父级分类id,如果是顶级分类则为0 path---1,用户分类的排序 . 排序示例: 实现逻辑:获取type表的所有分类,ord ...
- 【做题笔记】P1042 乒乓球
坑 #1:输入有若干行,但处理的时候要看成一个整体的信息.比如说第一行最后一局比分是 2:1 ,这时不算比完,这个比分要继承到第二行的信息中继续处理. 坑 #2:一局结束,当且仅当其中一方比分大于等于 ...
- MyBatis(7)——使用注解开发
说明:注解就是利用接口实现的,因此转为面向接口编程,使用接口开发拓展性好.分层开发时上层不用管理具体的实现.更加标准化更加规范.使得各个层的耦合度更低. 注:有了注释语句就不需要实体类的mapper文 ...
- CSP2019感想
我觉得自己好弱啊. 想更新博客,可是又没有人看. 本来自己还不算太弱,可是自己越来越腐败. 看看自己,连更新博客的资本都没有了呢.别人写些什么都是经典干货.自己写什么自己都觉得垃圾,只好默默地删掉. ...
- 吴裕雄 python 机器学习——数据预处理标准化MaxAbsScaler模型
from sklearn.preprocessing import MaxAbsScaler #数据预处理标准化MaxAbsScaler模型 def test_MaxAbsScaler(): X=[[ ...
- Win2012或Win2016安装网卡
在电脑安装了Windows Server 2012或者2016等系统之后,可能面临的很大的问题就是没有有线或无线网卡. 1.安装网卡的功能 2.一直到“功能”这部分,选择安装“DirectPlay”和 ...
- React 实现input输入框的防抖和节流
1.为什么使用防抖和节流对于频繁触发的事件 比如keydown keyup事件 当频繁点击时候 会多次触发事件 页面出现卡顿 影响性能 2.函数防抖(debounce):间隔时间内只执行一次 函数 ...
- Spring bean继承
Bean 定义继承 bean 定义可以包含很多的配置信息,包括构造函数的参数,属性值,容器的具体信息例如初始化方法,静态工厂方法名,等等. 子 bean 的定义继承父定义的配置数据.子定义可以根据需要 ...
- jinja 语法 - 整型转字符串
大多数 jinja 相关的问题,其实查文档就解决了,但后来遇到这个问题,使得我把 jinja 官方文档,api.样例等,认真读了个遍= =. 发现没有直接的办法可以将整型转为字符串,对于需要进行字符串 ...