《Windows网络编程 2》读书笔记(一)

Window的网络编程主要是利用WinSock,这是一种标准的API,注意它是编程接口,而不是网络协议。目前已经有两个版本WinSock1和WinSock2。在实际使用时必须包含相应的头文件和库,前者是Winsock.h, MSWsock.h/MSWsock.dll以及WSock32.lib,后者用Winsock2.h及WS2_32.LIB。

 

如果不想设置包含关系,可以在程序里面加上以下:

 

#pragma comment (lib, "ws2_32.lib")

 

使用WinSock之前必须初始化库,结束必须清理,以下是一个框架:

 

 

IP地址在WinSock中用SOCKADDR_IN结构体来描述。不同的计算机采用ig-endian和little-endian形式进行编号,例如Intel86处理器上,多字节编号用little-endian形式表示,即字节的排序是从最无意义的字节到最有意义的字节。

  • 在计算机中把Ip地址和端口号指定成多字节时,是按主机字节(host-byte)顺序表示;
  • 在网络上指定IP地址和端口号时指定多字节时,必须用big-endian形式,即网络字节(network-byte)顺序,也即从最有意义字节开始。

 因此,在设置IP地址时,需要进行一下字节转换。有许多API函数可以用于此作用:

下面是将一个数从host-byte转换成network-byte:     htonl, WSAHtonl,  htons, WSAHtons

下面是逆向转换的:ntohl, ntohs, WSANtohl, WSANtohs

 

 下面一段代码是演示如何绑定IP地址:

 

创建套接字:在Windows中,套接字与文件描述符不是一回事,是一个独立的类型,即SOCKET类型,其创建方法有两个函数:socket和WSASocket。

Socket socket(int af, int type, int protocol)

其中af设为AF_INET,type的类型对于Tcp来说是SOCK_STREAM,对于uDP来说是SOCK_DGRAM。Protocol的取值也有两个:IPPROTO_TCP或IPPROTO_UDP。

 

创建后,即要将端口与IP地址及端口绑定,可以用bind函数。

 

以下图形比较好的描述了通信双方的实现流程:

WinSOCK服务器和客户端模型

 

整体来说,第一章就是介绍了利用WinSOCK编程常用的一些API函数,这部分内容查阅MSDN即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值