與BSD風格相比,使用WSA winsock函數的Windows有什麼好處嗎?與BSD式套接字函數相比,使用Windows winsock API函數有什麼好處嗎?
0
A
回答
2
最顯著差別是Winsock的異步事件風格的API的可用性。
伯克利插座,每次read
或write
你的申請將「塊」,直到網絡已準備就緒,這可能使您的應用程序沒有響應(除非網絡I/O是在不同的線程處理)。
隨着異步接口,可以爲一個回調函數安排被稱爲正常窗口消息循環每次接收數據時,或者當發送緩衝器爲空的一部分。
2
只有當您計劃部署到像Windows 95這樣的傳統平臺,或者winsock API中有某些東西是絕對不能缺少的東西時,您不想自己推出(< - 可疑的壽)。
0
對於參宿一的答案,我同意 - 我只想補充一點,你不需要使用消息循環使用非同步操作上的插座。使用I/O完成端口是構建高性能網絡應用程序的一種非常可擴展的方式。
1
如果你周圍的BSD範型設計,你的代碼可以在其他平臺上以較少的移植工作,工作。如果你認爲你的網絡庫將支持異步I/O(就像Alnitak提到的那樣),如果你的網絡庫從你下面被取消,你將不得不做更多的工作。
當然,如果你確信你將永遠不會離開微軟的溫暖懷抱,隨意去鎮上。
相關問題
- 1. winsock套接字函數中的協議參數是什麼?
- 2. 與MediaPlayer類中的pause()函數相比,stop()函數的好處是什麼?
- 3. C#7本地函數相比lambdas有什麼好處?
- 4. 使用函數表達式而不是函數聲明有什麼好處?
- 5. 函數參考有什麼好處?
- 6. POSIX套接字和BSD套接字有什麼區別?
- 7. 有什麼好處導出函數調用自比功能直接返回
- 8. 有什麼辦法從用戶模式調用Windows Native API函數嗎?
- 9. 命名函數聲明有什麼好處嗎?
- 10. Linux上定義的BSD套接字函數在哪裏?
- 11. 使用類型來表示函數有什麼好處?
- 12. 在php中使用匿名函數有什麼好處?
- 13. Windows套接字API綁定函數編譯問題
- 14. 套接字API函數的語義
- 15. 添加沒有任何參數的構造函數有什麼好處嗎?
- 16. winsock和BSD套接字實現之間的差異
- 17. 讓Javascript函數的名稱以小寫字母開頭有什麼好處嗎?
- 18. 在嵌入式數據庫中使用JDBC連接池有什麼好處嗎?
- 19. 如何從使用winsock從套接字recv的函數返回char?
- 20. PHP:包含函數與靜態函數的調用。這個比那個好嗎?
- 21. 使用ObjectReader比ObjectMapper有什麼好處?
- 22. 爲什麼函數式編程很好?
- 23. 這個函數比較浮點數有什麼問題嗎?
- 24. RL-ARM庫的BSD套接字API
- 25. 使用字符串格式與字符串連接有什麼好處?
- 26. 直接在API包裝上使用REST API有什麼好處?
- 27. 在javascript中的函數聲明中命名函數有什麼好處?
- 28. 在函數中調用函數有沒有好處?
- 29. SQLite C API中使用sqlite3_data_count()比sqlite3_column_count()有什麼好處?
- 30. 使用Python類有什麼好處嗎?
在Linux,BSD套接字允許非阻塞讀,或者你可以使用select(),看看是否有任何數據可用。我假設在Windows上也是如此,但可能是BSD套接字API中缺少該功能。 – davr 2009-12-21 02:47:14