我正在使用TCP/IP在java中開發多客戶機/服務器應用程序。我的服務器爲每個clientSocket創建一個新線程(clientSocket = serverSocket.accept();)。問題似乎是爲所有正在運行的線程瞭解彼此的方式(即用於向聊天室中的所有在線用戶廣播消息)的方式。當我的每個線程知道新用戶何時連接到服務器以及用戶何時斷開與服務器的連接時,什麼是有效的方式?具有多線程服務器(TCP/IP)的客戶機/服務器聊天室
2
A
回答
0
我在你的位置會創建一個額外的隊列線程,它具有對套接字線程和消息隊列的引用。 所有的套接字線程都可以將消息排入隊列線程,然後將消息發送到所有套接字線程(因此套接字線程需要對您的隊列線程/隊列進行引用 - 同步!)。因爲你不得不期待ArryList?的套接字線程可以改變你必須使用迭代器迭代。
要回答你的問題的意見:性能
開始每個連接一個線程是相當激烈的資源(想象10.000連接)。所以還有其他的方法來處理它。
我會確定與米娜去:
的Apache MINA是一個網絡應用程序框架,它可以幫助用戶方便地開發高性能和高可擴展性的網絡應用程序。它通過Java NIO提供了各種傳輸(如TCP/IP和UDP/IP)上的抽象事件驅動的異步API。
網上有很多關於MINA的教程。
也許它有點矯枉過正,但如果你有興趣,這是值得的。
[編輯]
如果它應該是它只是10-15客戶蠻好用的每個連接一個線程...
相關問題
- 1. 聊天服務器 - 客戶端/服務器聊天Java作業
- 2. Java多客戶端聊天服務器
- 3. UDP多客戶端聊天服務器
- 4. 多線程多客戶端聊天服務器
- 5. 具有多個客戶端的聊天服務器
- 6. 多線程聊天服務器
- 7. vb.net多線程聊天客戶端和服務器
- 8. Python:多客戶端線程聊天服務器
- 9. 多線程客戶端 - 服務器聊天,使用套接字
- 10. 客戶端服務器tcp/ip聊天室應用程序
- 11. 客戶端 - 服務器在Lua聊天
- 12. 同步:客戶端,服務器聊天
- 13. 聊天客戶端服務器C++
- 14. 客戶端服務器聊天
- 15. 客戶端 - 服務器聊天Twisted,Python
- 16. Java聊天客戶端和服務器
- 17. (聊天)服務器和客戶端
- 18. 服務器/客戶端聊天
- 19. C++服務器客戶端聊天
- 20. 聊天服務器客戶端輸出
- 21. Java客戶端/服務器聊天
- 22. Java聊天服務器客戶端
- 23. Java多服務器聊天
- 24. 的Java:多線程聊天服務器發送消息到只有1客戶
- 25. 無法與聊天室服務器
- 26. 聊天服務器。線程問題
- 27. 使用Window服務或WCF製作聊天服務器(聊天服務器的.NET服務和聊天客戶端的iOS應用程序)
- 28. java中的多線程客戶端服務器聊天應用程序
- 29. 多線程服務器/客戶端聊天應用程序中的ConcurrentModificationException
- 30. 具有多線程的客戶端服務器
您startig爲每個連接分配一個線程,然後想efficent?您希望在高峯時間使用您的應用程序有多少useres? –
這真的是一門大學課程,所以我會說最多10-15。順便說一下,爲每個連接啓動一個新線程會有什麼效率? – user2000920
我的帖子對你有幫助嗎? :) –