最近评论
正在载入评论列表...
![]() |
![]() |
在UNIX操作系统中,所有套接字都是文件。操作系统并不能区分套接字和文件,因此可以对二者使用相同的读写函数。
由此,只要发生了套接字错误,就用错误值来设置全局变量errno。
遗憾的是,Windows采用了与UNIX操作系统完全不同的方法,Windows将套接字和文件作为单独的实体来看待。而更慒糕的是,Windows的Winsock与errno错误报告系统并不兼容。因此,只要产生了错误,就必须使用WSAGetLastError()函数来检索错误,但是不必担心,二者返回的错误值是相同的。
使用#defines也可以解决这一冲突,具体方法将在第4章中讲述,另外还会介绍如何将Socket API抽象到一个包装器(wrapper)中。
附录B(在光盘中)完整地列出了所有的错误代码和它们的含义。虽然力图列出本章中每个套接字函数可能的每个错误,但还是应该注意到在基本网络子系统中也可能发生其他套接字错误。