博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Part 1 start network programming:chapter one:1.3 基于Windows平台的实现
阅读量:3937 次
发布时间:2019-05-23

本文共 1208 字,大约阅读时间需要 4 分钟。

正文

1.3 基于Windows平台的实现

win套接字简称 Winsock

1.3.1 同时学习Linux和Windows目的

两者其实差异不大

1.3.2 为Windows套接字编程设置头文件和库

作者用的是codeblocks 只需要在编译器-》链接器设置中添加

E:\CodeBlocks\MinGW\lib\libws2_32.a(libws2_32这个库就ok啦,位置因人而异~)

1.3.3 Winsock的初始化

首先必须调用WSAStartup函数,设置程序中用到的Winsick版本,并初始化相应版本的库

#include 
// wVersionRequested:程序员要用的Winsock版本信息 ;// lpWSAData:WSADATA结构体变量的地址值int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData);成功返回0,失败返回非零的错误代码值

上方函数参数的说明:

有必要给出上述两个参数的详细说明。
先说第一个, Winsock 中存在多个版本,应准备WORD类型
(WORD 是通过 typedef 声明定义的 unsigned short 类型)的套接字版本信息,并传递给该函数的第一个参数 wVersionRequested 。若版本为1.2,则其中1是主版本号,2是副版本号,应传递
0x0201。
如前所述,高8位为副版本号,低8位为主版本号,以此进行传递。主要使用22版本
故应传递0x0202。不过,以字节为单位手动构造版本信息有些麻烦,借助 MAKEWORD宏函数则
能轻松构建WORD型版本信息。

MAKEWORD(1,2);	//主版本为1 副版本为2 返回0x0201MAKEWORD(2,2);	//主版本为2 副版本为2 返回0x0202

再说第二个参数lpWSADATA 这个参数需要传入 WSADATA型结构体变量地址(LPWSADATA是WSADATA的指针类型)

地址中填充已初始化的库信息。 下面的调用过程是 Winsock编程的公式

int main(int argc, char* argv[]){
WSADATA wsaData; ...... if(WSAStartup(MAKEWORD(2,2),&wsaData) != 0){
ErrorHandling("WSAStartup() error!"); } ...... return 0;}

前面介绍了Winsock相关库的初始化方法,接下来是如何注销该库————利用下面的函数(WASCleanup(void))

#include 
int WSACleanup(void);成功时返回0,失败时返回SOCKET_ERROR

具体的实践过程见下一节内容1.4

转载地址:http://qjzwi.baihongyu.com/

你可能感兴趣的文章
Python条件语句
查看>>
Python eval()函数
查看>>
Linux vi编辑器命令详解
查看>>
Linux常用命令之man/mv/shutdown/history
查看>>
Linux rz和sz命令详解
查看>>
Python 函数之函数定义、调用、传参
查看>>
Python 函数之参数、局部变量
查看>>
Python模块
查看>>
Python 包
查看>>
Python 异常处理
查看>>
Python 集合set
查看>>
Linux 系统状况之查看用户
查看>>
Linux用户和用户组管理
查看>>
Linux 磁盘管理
查看>>
Linux 内存及cpu解析
查看>>
Python时间模块之Time模块解析
查看>>
Python 文件操作
查看>>
Python 实现队列
查看>>
Python 实现栈
查看>>
Python 冒泡排序
查看>>