我明白的Winsock是用於Windows操作系統的網絡和BSD是Mac OS和Unix。是否有某種類型的「通用」套接字適用於上述三種操作系統中的任何一種?或者,服務器是否必須將兩個套接字以某種方式併入其中,以便與不同OS的客戶端兼容?如果你避免一些更高級的功能網絡跨多個操作系統
1
A
回答
1
Winsock和BSD套接字是兩個類似的API的名字既實現同樣的事情:TCP/IP套接字,而這又是TCP連接或UDP數據報流的終點。由於實際傳輸由TCP/IP RFC定義,因此它們可以互操作。因此沒有必要在Unix上使用Winsock實現,或者在Windows上使用BSD套接字實現。事實上,後者就是Winsock或多或少的,在這裏和那裏模成一些誤解。
總之,你的問題並沒有真正意義。
0
Winsock的是BSD兼容。訣竅是在處理非字節數據時要考慮endianess。取決於您的架構和語言,浮點可能會變得棘手。 char數組將保持事物的可預測性,但這可能是有限的。如果遵循協議,則只需要一臺服務器。
1
套接字是插座,他們只是泵數據。因此,您可以在Windows上使用Java編程服務器,在BSD上使用C編程的客戶端,他們仍然可以相互通信。
進行交叉編譯,而無需使用第三方庫,你可以更多或更不容易通過使用一些的#ifdefs做到這一點,多看@http://tangentsoft.net/wskfaq/articles/bsd-compatibility.html
另一種方法是使用第三方庫,可能最簡單的方式,可以發揮其他優勢,如更先進的功能等。 UDT讓人想起,但還有其他的。 (http://udt.sourceforge.net/)
1
這裏有一個小祕密:Winsock的是基於BSD套接字。除了初始化和關閉winsock庫之外,BSD和Windows套接字之間的實際網絡代碼庫是相同的。
相關問題
- 1. 刪除跨多個操作系統
- 2. QEMU客戶操作系統中的網絡如何工作?
- 3. 多核和操作系統
- 4. 多操作系統DBMS
- 5. Xcode iPhone操作系統多個版本
- 6. 單機上的多個操作系統
- 7. 同時測試多個操作系統
- 8. 多個操作系統安裝
- 9. 操作系統如何知道哪個網絡接口用於互聯網?
- 10. 網絡和操作系統基礎知識的好書
- 11. 獲取網絡終端的操作系統版本(JAVA)
- 12. Android操作系統阻止我的網絡包
- 13. Unix操作系統中的網絡連接意識
- 14. 操作系統
- 15. 操作系統應該爲網絡腳本提供多少訪問權限?
- 16. 操作系統在放棄網絡流量之前存儲了多長時間?
- 17. jQuery Ajax跨瀏覽器/跨操作系統
- 18. 網站是否依賴操作系統?
- 19. 網絡登錄系統
- 20. 網絡監控系統
- 21. Android操作系統中的多操作系統引擎構建失敗
- 22. i7處理器與Windows8操作系統的多線程問題操作系統
- 23. 多操作系統與SIngle操作系統電話和服務器開發
- 24. 操作系統 - TLB
- 25. 操作系統中
- 26. Linux操作系統
- 27. FASM操作系統
- 28. 將rpm從一個操作系統複製到另一個操作系統
- 29. 跨多個網絡服務交易
- 30. 跨多個文件系統和操作系統的文件會發生什麼變化
我不知道他們是如此相似,這是我的問題的一個利益點。 – LucasS
@LucasS他們的全部目的是相似的。我通過iPad或Windows筆記本電腦在這裏發帖:服務器可能是運行Java的Solaris機器。這就是互聯網。 – EJP