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 ...
随机推荐
- ubuntu 切换用户
app切换root ubuntu: sudo su - app sudo su - root centos : sudo su ############ root 切换app sudo su - ap ...
- codeforces div2 603 C. Everyone is a Winner!(二分)
题目链接:https://codeforces.com/contest/1263/problem/C 题意:给你一个数字n,求n/k有多少个不同的数 思路:首先K大于n时,n/k是0.然后k取值在1到 ...
- codeforces 1189C Candies! / 前缀和
http://codeforces.com/problemset/problem/1189/C 求一下前缀和,给定区间的数字和除以10就是答案 AC代码: #include<iostream&g ...
- Dataset数据的XML持久化处理
主要方法是用ADO.NET的DataTale 填充到Dataset Dataset 内置了XML持久化的方法,WriteXML和ReadXML:简单的WinFrom实例:从数据库的表 private ...
- jmeter的使用---控制器
1.如果(If)控制器.Switch Controller if控制语句,判断字段是否存在,或者符合,执行不同的逻辑 2.简单控制器 一次进件流程,需要不同模块的数据,例如登陆,提交个人信息,信用认证 ...
- android底部导航栏实现
第一种用radiobutton实现 https://wizardforcel.gitbooks.io/w3school-android/content/75.html 布局文件,使用radiogrou ...
- Ugly Number Gym - 101875B (最小表示法)
题意:给你一串长度为n的数,这个数可以将后面的数挪到前面来,如果没有小于最开始的那个数的话就输出YES,否则输出NO 题解:如果后面有数字小于第一个数的话就肯定是NO了,这题的坑点就是如果前面很长一串 ...
- 2019新生赛 %%%xxh
笔记.md ...
- 刷题10. Regular Expression Matching
一.题目说明 这个题目是10. Regular Expression Matching,乍一看不是很难. 但我实现提交后,总是报错.不得已查看了答案. 二.我的做法 我的实现,最大的问题在于对.*的处 ...
- 普及C组第一题(8.1)
1999. [2015.8.6普及组模拟赛]Wexley接苹果(apple) 题目: Wexley最近发现了一个古老的屏幕游戏.游戏的屏幕被划分成n列.在屏幕的底端,有一个宽为m列的篮子(m<n ...