与BSD风格的功能相比,Windows使用WSA winsock功能有什么好处吗?
答案 0 :(得分:2)
只有当你计划部署到像Windows 95这样的传统平台或者winsock API中有一些你绝对不能没有的东西而且你不想自己滚动时(< - 怀疑)。
答案 1 :(得分:2)
最重要的区别是Winsock中异步事件样式API的可用性。
使用Berkeley套接字时,每次read
或write
您的应用程序将“阻止”直到网络准备就绪,这可能会使您的应用程序无响应(除非网络I / O在不同的主题)。
使用异步接口,您可以安排回调函数在每次接收数据或发送缓冲区为空时作为正常Windows消息循环的一部分进行调用。
答案 2 :(得分:1)
如果您围绕BSD范例进行设计,那么您的代码可以在其他平台上运行,而且移植工作量较少。如果你假设你的网络库将支持异步I / O(正如Alnitak所提到的那样),那么如果从你的下方撤出,你将不得不做更多的工作。
当然,如果您确定永远不会离开微软的温暖怀抱,请随时前往城镇。
答案 3 :(得分:0)
关于Alnitak的回答,我同意 - 我只是补充一点,你不需要使用消息循环来在套接字上使用异步操作。使用I / O完成端口是构建高性能网络应用程序的一种非常可扩展的方法。