我已經實現了一個客戶端服務器的jave程序,使用TCP進行分配。現在我來解釋爲什麼我選擇了TCP通訊時如HTTP其他替代品也可.. 所以我需要一些原因,TCP是比另一個更好..如何比HTTP通信更好地使用TCP通信?
2
A
回答
7
HTTP不是替代到TCP。它是一個建立在TCP之上的協議。
由於HTTP在基本的請求/響應基礎上工作,自定義交互協議在TCP上實現比在HTTP上執行效率高得多。
在純TCP連接上,兩端都可以隨時發送消息。在HTTP上,服務器無法主動向客戶端發送消息。它需要等待客戶端發送請求。
HTTP的一個優點是它幾乎可以普遍理解:所有語言都有服務器和客戶端庫,有很好理解的緩存和代理機制,以及內置的各種內容協商機制。
所以這是高級別或更低級別的抽象之間的傳統折衷:
- 較低級別的抽象(TCP)提供高flexbility和實現幾乎所有的可能性,而它並非如此簡單易用
- 更高層次的抽象(HTTP)提供了更多的內置功能,而且更容易支持,但附加功能也難以增加
3
4
HTTP是TCP的頂層上的協議。它提供了特定的功能並缺少其他功能(最顯着的狀態和服務器啓動通信的能力)。如果你需要HTTP使得硬件或不可能的東西,那麼使用別的東西是個好主意。或者你可以把這些功能混淆在HTTP之上,這似乎是最受歡迎的選擇(可能是因爲「只有端口80在任何地方都是開放的,所以讓我們用它來解決所有問題」),但通常會導致到相當討厭的黑客。
相關問題
- 1. HTTP 1.1的tcp通信
- 2. TCP IP通信
- 3. TCP通信
- 4. 通過TCP/IP或HTTP使用C#.net通信到Windows Mobile?
- 5. TCP通信是雙向通信嗎?
- 6. 如何在iPhone上使用HTTP通信?
- 7. 如何將RS232通信轉換爲TCP/IP通信
- 8. 用於手機通信的SMS,TCP,UDP更好嗎?
- 9. Android HTTP通信:
- 10. 使用套接字的TCP/IP通信
- 11. HTTP通信通過WAN
- 12. Android TCP通信錯誤
- 13. Windows Azure上的TCP通信
- 14. 循環TCP通信C++
- 15. 直接TCP/IP通信
- 16. TCP Socket通信限制
- 17. C#動態TCP/IP通信
- 18. Xml webservice和Tcp通信
- 19. TCP套接字通信
- 20. 如何通過JavaScript通過TCP套接字進行通信?
- 21. 通過套接字的Java TCP通信
- 22. 使用jsp通過HTTP發送短信
- 23. 使用.htaccess強制HTTP通信到HTTPS
- 24. Wireshark無法通過TCP檢測本地進程通信
- 25. 用於tcp通信的線程
- 26. AsyncTask更好的通信協議
- 27. 更好的socket通信系統
- 28. 測試通過HTTP進行通信的單元的好方法
- 29. Solr與HTTP的通信
- 30. Android的安全HTTP通信
Http使用TCP,所以比較它們並不是真的有效......大概問題是「爲什麼你會選擇通過TCP進行合理的實現,當更多的開放,標準化的格式,如http已經存在」? – Nathan 2011-05-12 06:55:07