有數千個客戶端參與的客戶端 - 服務器(TCP)應用程序的最佳組件,而所有連接必須保持活動狀態?
到目前爲止,我已使用Indy在服務器應用程序中有一個TIdTCPServer
,在所有客戶端應用程序中都有一個TIdTCPClient
。我希望客戶端和服務器隨時隨地發送數據。
這是一個好方法嗎?具有數千個客戶端的客戶端 - 服務器的最佳組件
回答
它可能工作,但它可能最終會帶來很多問題,這取決於什麼樣的數據,負載,安全性等。我最終使用了一個Web服務器(Tomcat + Comet)。這項工作已經完成:套接字穩定性,框架,安全性,跨多個實例的負載分擔等... 成千上萬的客戶端並不那麼容易處理......然後您可以專注於您的應用程序,並且只關注它。
+1,Java(Netty,Servlets)在http://www.techempower.com/blog/2013/04/05/frameworks-round-2/ – mjn 2013-05-10 10:19:12
排名第一.AFAIK Indy沒有實現IOCP,所以會創建每個客戶端連接一個線程。所以它將無法處理數千個客戶端,而不會觸發Out Of Memory錯誤。這裏需要IOCP/EventDriven服務器,而Indy不具備這種架構。 @mjn Java服務器超出了範圍,在這個問題的背景下,我很害怕。只需比較「hello world」JSON請求背後的內存消耗。 :) – 2013-05-10 12:45:43
@ArnaudBouchez:客戶端將只消耗1個線程...因爲它是客戶端;)。在服務器端,我不會使用indy也不使用Delphi來構建服務器(爲什麼我會重建輪子?)。 – 2013-05-10 12:52:51
- 1. c - 具有多個客戶端的UDP客戶端服務器
- 2. 具有多個客戶端的Java服務器客戶端
- 3. Java:服務器/客戶端 - >客戶端/客戶端
- 4. 服務器端與客戶端端編碼的最佳實踐
- 5. 處理SSL客戶端到服務器到客戶端的最佳方式(relay?)
- 6. 具有多個客戶端的客戶端/服務器體系結構
- 7. 具有多個端口和多個客戶端的服務器
- 8. Java客戶端服務器/一個線程多個客戶端
- 9. 客戶端 - 服務器(從服務器到客戶端的文件傳輸)
- 10. 客戶端數據到服務器端
- 11. 與服務器同步多個客戶端的最佳方法
- 12. asp.net驗證客戶端或客戶端或服務器端
- 13. WCF的服務器/客戶端conected客戶服務器
- 14. JavaScript中的客戶端服務器端
- 15. 客戶端或服務器端的ServicePointManager.DefaultConnectionLimit?
- 16. 的NodeJS:客戶端到客戶端通過服務器
- 17. Java中的服務器客戶端:無法啓動客戶端
- 18. 多客戶端C服務器的異步C客戶端
- 19. 客戶端服務器 - (TCP)
- 20. BufferedReader,客戶端/服務器
- 21. JXTA客戶端 - 服務器
- 22. 客戶端服務器C++
- 23. 服務器客戶端iphone
- 24. 服務器和客戶端
- 25. 服務器/客戶端C#
- 26. Android客戶端服務器
- 27. Arduino客戶端/服務器
- 28. 服務器客戶端java
- 29. Java客戶端服務器
- 30. TCP客戶端服務器
東西['related'](http://stackoverflow.com/q/15924616/960757)。 – TLama 2013-05-10 09:42:00
另請參見[可擴展的Delphi TCP服務器實現](http://stackoverflow.com/questions/7150093/scalable-delphi-tcp-server-implementation) – mjn 2013-05-10 10:15:27
請參閱[本博客條目有關DataSnap併發訪問](http:// robertocschneiders .wordpress.com/2012/11/22 /基於datasnap-analysis-on-speed-stability-tests /) - 聽起來的確如果Indy的擴展性不好。使用第1000個客戶端時,請參考IOCP /事件驅動的服務器,如http://www.realthinclient.com/或我們的開源http://mormot.net – 2013-05-10 11:53:15