2.3.1 头文件
Sockets API和Winsock之间的主要区别是它们所要求访问API的头文件有所不同。
在这一点上Winsock相对容易一些,它只需要在两个文件中进行操作:
#include "winsock.h"
#include "ws2tcpip.h"
在UNIX操作系统上,Sockets API分布于很多不同的头文件中,因此事情就变得更加复杂。表2.1列出了文件名及其内容。
表2.1 Sockets API头文件
|
文 件 |
内 容 |
|
sys/types.h |
所有需要的基本类型 |
|
sys/socket.h |
所有套接字数据结构 |
|
netinet/in.h |
IPv4和IPv6所需要的全部函数 |
|
unistd.h |
查找本地机器名所需要的gethostname()函数 |
|
netdb.h |
所有需要的DNS函数 |
|
arpa/inet.h |
以inet_打头的所有函数 |
|
errno.h |
所有的错误处理信息 |
|
fcntl.h |
所有的文件控制信息 |
暂时不理解其中的某些内容,也不必担心,会慢慢地全部讲给大家听的。
注意:文件winsock.h包含Winsock版本1的头信息。较新的Winsock版本Winsock 2添加了许多新的网络特性,但是,遗憾的是,它们只适用于Windows系统。Winsock 2的头文件是winsock2.h。但是,使用哪个头文件并没有什么实际意义,仍然使用原来的Sockets API即可,因为Winsock 2完全向后兼容。事实上,使用原来的Sockets API甚至比使用Winsock 2可能还好(Windows 95之后的几乎每个微软的操作系统都内置了Winsock 2),因为在旧版本中对实现进行了优化处理。只要确保在项目中包含相同的版本库文件即可。更多的信息请参见附录A(在光盘中可以找到)。






