我正試圖將Linux應用程序移植到Windows。該應用程序不是太複雜,使用所有相當標準的代碼,只需很少的外部依賴。主要依賴是libelf(在mingw下編譯得很好),pthreads(似乎有一個win32版本可用)和套接字。主要問題是套接字... Windows提供了WinSock,但這與所有* nixes使用的BSD(Berkeley)套接字不是100%兼容的。我想知道的是,是否有人在暴露了BSD套接字API的窗口上編寫了封裝器,但在後端調用Winsock以便輕鬆移植?winsock的BSD套接字兼容包裝?
0
A
回答
1
我會推薦使用cygwin.dll。它用於將* nixes引入到包括套接字,文件IO等窗口中。
1
大多數情況下,您只需確保在開始和結束時調用WSAStartup()和WSACleanup(),否則,基本的BSD套接字將非常好地轉換。您可以創建一些靜態全局變量,每次調用套接字調用時都會檢查它們,並相應地調用WSAStartup()和WSACleanup()。至於poll()...以及它很容易轉換爲select()。
+0
感謝您的提示,我想他們有些幫助。但我更希望有人已經爲我編寫了代碼,所以我不必實施所有這些小修補程序來實現它。 – davr
相關問題
- 1. winsock和BSD套接字實現之間的差異
- 2. Android BSD套接字連接
- 3. 找到兼容套接字
- 4. BSD套接字不工作
- 5. RL-ARM庫的BSD套接字API
- 6. BSD Make和GNU Make兼容的makefile
- 7. POSIX套接字和BSD套接字有什麼區別?
- 8. 用websocket包裝套接字
- 9. Winsock/BSD套接字 - 接受具有與本地IP不同的目標IP的TCP連接
- 10. BSD套接字問題:inet_ntop返回「0.0.0.0」
- 11. BSD套接字和超時iOS中
- 12. BSD/Posix套接字是否可重入?
- 13. 安裝Office2003兼容包?
- 14. 將本地winsock套接字傳遞給java套接字
- 15. 套接字程序Python vs C++(Winsock)
- 16. winsock客戶端套接字無效
- 17. 套接字無法綁定(C與WinSock)
- 18. 在winsock中檢索套接字協議
- 19. 將Winsock移植到Linux套接字
- 20. 在WinSock中處理異步套接字?
- 21. SO_LINGER和關閉套接字(WINSOCK)
- 22. WinSock:從套接字中刪除數據
- 23. 帶事件的套接字包裝
- 24. Boost :: asio winsock和winsock 2兼容性問題
- 25. 與PDFlib API兼容的PHP包裝器
- 26. 使用BSD套接字仿真一個活動的FTP連接
- 27. BSD套接字連接+選擇(客戶端)
- 28. 連接時BSD套接字無效參數
- 29. Android穿戴包裝1兼容設備
- 30. 與BSD式套接字函數相比,使用Windows winsock API函數有什麼好處嗎?
我想避免cygwin如果可能的話,使用它有很多缺點。這個應用在mingw32中編譯得很好,除了套接字,BSD套接字與winsock非常相似,所以我的想法是在它們之間轉換的包裝不會太複雜,並且這可能已經存在 – davr
是的,cygwin會帶着一些「行李」。源代碼確實實現了有問題的包裝。雖然你會驚訝Winsock2.h與BSD有多接近(大多數情況下)。從擺脫編譯器錯誤的角度來看,包裝可能看起來沒問題。但額外的層面可能不值得考慮港口是多麼容易。我做了一個差不多十年的港口,從我記得以後幾乎沒有時間,大部分發現/替換所有進程。 MS有一個指導,你可能已經看到:http://msdn.microsoft.com/en-us/library/ms738562(VS.85).aspx – MandoMando