注意,即使一个平台支持Winsock 2,仍可不需要Wi n s o c k的最新版本。也就是说,如果
你打算编写主流平台均支持的应用程序,可根据Winsock 1.1规格来编写。编出来的程序可以
在Windows NT 4.0平台上正确无误地运行,因为所有的Wi n s o c k 1 . 1调用都通过Winsock 2 DLL
映射出来了。同时,若市面上出现了Wi n s o c k库的新版本,它是针对你正在使用的平台的,那
么,你肯定想急于升级。这些新版本中包含了错误纠正,这样,老代码就可无故障运行了
—至少理论上如此。某些情况下,Wi n s o c k堆栈的行为和规格中定义的不同。如此一来,许
多程序员编程时根据特定目标平台的行为来进行编程,而不是根据规格来写程序。比如,在
Windows NT 4.0平台下,一个程序正在用异步窗口事件模型,表明可以写入数据的每个成功
的s e n d或W S A S e n d之后,才会投递F D _ W R I T E。然而,根据规定, F D _ W R I T E是在系统能够
发送数据时(比如在应用程序启动时)投递,而且,投递的那个F D _ W R I T E意味着在收到
W S A E W O U L D B L O C K错误之前,应该一直写入数据。事实上,在系统发送所有待发数据和
可以处理更多的send WSAsend调用之后,将向用户的应用程序窗口投递一个F D _ W R I T E事件,
这时,才又可以向网络写入数