用到C语言的winsock.h头文件来编写服务器客户端的代码,首先的一步就是确认版本号,我们用到WORD和MAKEWORD这两个东西
首先,版本号的版本有(目前我猜测的){
(1.0)
(1.1)
(2.0)
(2.1)
(2.2)
}
ok写完了,以下是证明我的猜测.如果有大佬知道winsock.h公布出来的所有版本号,也可以留言.
其中WORD是unsigned short的自定义名称,MAKEWORD是一只宏他有两个参数(a,b)
a:代表低位数 表示主版本
b:代表高位数 表示副版本
unsigned short(无符号短整型) 在C语言中占用字节为2字节,一字节为8位,则unsigned short的实际状态是:00000000 00000000
高位数:较高的位数,代表左边的8个0
低位数:较低的位数,代表右边的8个0
则版本1.0要写成MAKEWORD(1,0) 内存条为:00000000 00000001 数字:1
版本1.1 MAKEWORD(1,1) 内存条为:00000001 00000001 数字:257
版本2.0 MAKEWORD(2,0) 内存条为:00000000 00000002 数字:2
以此类推...
但是经过一些实验发现有些版本,内存储存的数与实际填的不同
如:填写1.6 MAKEWORD(1,6) 内存依然为:00000001 00000001 数字:257
填写1.2-1.9都会出现如上问题,那么可以得知,就算在MAKEWORD填写1,6他对应的依然是1.1的版本
在2.3-2.9也出现了相同问题.甚至3.0以上也按2.2处理.
则有个大胆的想法,其实winsock的公布版本没有那么多,凡是填写了不存在的版本,都按离他最近的低版本处理.