Windows NT 中管道编程与应用全解析
1. 16 - 位 Windows Sockets 应用指南
在 16 - 位 Windows Socket 应用开发中,有一些重要的编程准则需要遵循。除非必要,Windows 应用程序应尽量避免使用阻塞式的套接字调用,如connect()、send()或recv()。应尽可能使用 Windows Socket 异步接口,像WSAAsyncSelect()。应用程序还能通过ioctlsocket()API 使套接字变为非阻塞模式,或者使用select()API 来确定套接字的状态。
当在套接字上进行阻塞式调用时,Windows Socket 实现会提供默认的 Windows 消息处理功能,以防止系统挂起。不过,应用程序设计者可以考虑使用WSASetBlockingHook()函数提供自己的消息处理功能,这样能为用户呈现响应式的图形用户界面(GUI),还可以提供一个对话框来取消可能的长时间网络调用。
另外,应用程序需要锁定与异步套接字 I/O 调用相关的内存缓冲区和结构,例如WSAAsyncGetHostByName()API。虽然基于 Windows Socket 的服务器可以在 Windows 3.x 工作站上运行,但对于关键的客户端/服务器系统,建议将服务器部署在更强大的操作系统上,如 Windows NT、OS/2 或 UNIX。