0

与 BSD 风格的函数相比,在 Windows 上使用 WSA winsock 函数有什么好处吗?

4

4 回答 4

2

仅当您计划部署到像 Windows 95 这样的旧平台或 winsock API 中有一些您绝对不能没有并且您不想滚动自己的东西时(<--值得怀疑)。

于 2008-11-08T03:39:43.977 回答
2

最显着的区别是 Winsock 中异步事件样式 API 的可用性。

使用 Berkeley 套接字,每次您readwrite您的应用程序都会“阻塞”直到网络准备好,这可能会使您的应用程序无响应(除非网络 I/O 在不同的线程中处理)。

使用异步接口,您可以安排在每次接收到数据或传输缓冲区为空时调用回调函数作为正常 Windows 消息循环的一部分。

于 2008-11-09T23:47:30.840 回答
1

如果您围绕 BSD 范式进行设计,您的代码可以在移植工作较少的其他平台上运行。如果您假设您的网络库将支持异步 I/O(正如 Alnitak 所提到的),那么如果从您的手下撤出,您将不得不做更多的工作。

当然,如果你确定永远不会离开微软温暖的怀抱,那就去镇上吧。

于 2008-11-10T17:28:37.297 回答
0

关于 Alnitak 的回答,我同意 - 我只是补充一点,您不需要使用消息循环来在套接字上使用异步操作。使用 I/O 完成端口是构建高性能网络应用程序的一种非常可扩展的方式。

于 2008-11-10T17:22:37.980 回答