有人能解釋他們的區別嗎?他們是否一樣,工作方式相同?哪一個比其他組件好?TTcpClient/TTcpServer和TClientSocket/TServerSocket有什麼區別?
3
A
回答
7
他們是不一樣的,他們不會以同樣的方式工作。他們採用不同的方法來進行套接字API交互,事件處理,錯誤處理等。
TClientSocket
和TServerSocket
是原始的基於VCL的(Windows特定的)套接字組件。它們在Delphi 7中已被棄用,並且不再默認安裝,但如果要使用它們,仍然可以手動安裝。
TTcpClient
和TTcpServer
最初是在Delphi 6中作爲Kylix(這是一款死貨)的跨平臺套接字解決方案引入的。他們在XE6中從德爾福中刪除,降級到演示狀態,甚至沒有官方組件。
在我看來,TTcpClient
和TTcpServer
是可怕的組件,你應該遠離它們。他們對跨平臺編程採用非常簡約的「最不常見的demoninator」方法,僅適用於多個平臺支持的一些基本功能,而不利用任何平臺特定的功能甚至更高級別的功能。他們有一個非常基本的界面,設計很糟糕。他們很難合作,錯誤處理不好,並且使用起來不靈活。
如果你需要編寫新的socket代碼,TClientSocket
和TServerSocket
工作巨大的,如果你只支持Windows興趣,但如果你需要支持跨平臺的,那麼你應該使用第三方的套接字庫,如(TIdTCPClient
/TIdTCPServer
),ICS(TWSocket
/TWSocketServer
)Synapse(TTCPBlockSocket
)等
相關問題
- 1. 有什麼區別`和$(Bash中有什麼區別?
- 2. 有什麼區別? :和||
- 3. &&和||有什麼區別?
- 4. 「/」和「/ *」有什麼區別?
- 5. 有什麼區別:。!和:r!?
- 6. ==和===有什麼區別?
- 7. Appender和〜有什麼區別?
- 8. $ @和$ *有什麼區別?
- 9. is和=有什麼區別?
- 10. #.00和#。##有什麼區別?
- 11. `==`和`is`有什麼區別?
- 12. '=='和'==='有什麼區別?
- 13. /和/#/有什麼區別?
- 14. | 0和~~有什麼區別?
- 15. `&`和`ref`有什麼區別?
- 16. ==和===有什麼區別?
- 17. ==和===有什麼區別?
- 18. `{}`和`[]`有什麼區別?
- 19. JavaScript和=== ===有什麼區別?
- 20. difftime和' - '有什麼區別?
- 21. =和==有什麼區別?
- 22. xtype和別名有什麼區別?
- 23. Mixpanel:識別()和people.identify()有什麼區別?
- 24. 有什麼區別
- 25. 有什麼區別
- 26. 有什麼區別?
- 27. 有什麼區別?
- 28. 有什麼區別?
- 29. 有什麼區別
- 30. ....有什麼區別?
如果Tclientsocket構件實現被棄用,TTcpClient是要避免的,什麼成分(S)被推薦爲簡單的TCP/IP通訊?我經常使用TClientSocket並推薦組件。 – AlainD 2015-11-27 13:57:42
@AlainD:我已經在我的回答中解決了這個問題。 – 2015-11-28 06:56:29
那麼,你說「使用indy或ICS」,圖書館,他問的組件。 – MarkAurelius 2016-10-28 01:50:55