我想创建一个具有多个客户端的服务器,但我不确定如何执行此操作。我只知道如何与一个客户做到这一点。我在谷歌上查了一些教程,但我不明白为什么有用,所以每个人都可以解释他们的答案?非常感谢你们! :D具有多个客户端的Java服务器
回答
为了处理多个客户端,您需要将通信委托给不同的线程。举一个真实的例子,在与其他人交谈时,不能接电话。一个人需要接听电话,而另一个人则需要接听这些电话。
有关如何使用java服务器处理多个客户端的一个非常基本的示例,可以在此link找到,更具体地在KKMultiServer和KKMultiServerThread类中。正如您所看到的,KKMultiServer的主线程每次接受连接时都会生成一个新线程,并且实际的通信将在新生成的线程中处理。
可以想象每次客户端连接时创建新线程的缺点,因此在现实生活中,资源经常被重用在线程池中。
你可以避开这种需要通过使用非阻塞io (NIO)将工作委派给新线程,但是对于第一次服务器实现,我建议使用阻塞IO来降低复杂性。
如果你有一个服务器到客户端的连接建立,其余的很简单。让服务器套接字监听程序不断循环,以便一旦建立连接,就可以在新线程上运行程序,从而不断查找新连接。如果你一直在寻找的教程我建议您查看文档,在这里有一个很好的例子:
https://docs.oracle.com/javase/tutorial/networking/sockets/clientServer.html
滚动至最底部,你会看到如何创建一个服务器,它可以很好的例子处理多个连接
谢谢!所以,我会尝试在while(true)循环中使用此代码? [链接](http://pastebin.com/NeR6KcV1) –
我有一个问题:如果客户端已经在客户端数组中,这个工作吗?如果它已经在那里,但是你再次调用accept()呢? D: –
- 1. 具有多个客户端的Java服务器客户端
- 2. Java客户端服务器/一个线程多个客户端
- 3. 具有多个客户端的客户端/服务器体系结构
- 4. Java客户端服务器 - 客户端的多事件处理
- 5. 具有多个客户端的Ruby UDP服务器?
- 6. 具有多个客户端的简单TCP服务器C/unix
- 7. 具有多个客户端的简单服务器
- 8. 具有多个客户端的C++ Winsock服务器?
- 9. 具有多个客户端的Obj-C服务器
- 10. С++ - 具有多个客户端的UDP服务器
- 11. Java多线程服务器客户端
- 12. Java多客户端聊天服务器
- 13. 服务器客户端java
- 14. 客户端JavaScript与服务器端Java的速度有多快?
- 15. 具有数千个客户端的客户端 - 服务器的最佳组件
- 16. 具有JLine3和JSch客户端的Java SSH服务器
- 17. 单服务器与多个客户端
- 18. 具有多线程的客户端服务器
- 19. java中的客户端服务器
- 20. 的Java RMI - 使客户端服务器
- 21. java的TCP客户端和服务器
- 22. GUI客户端 - JAVA中的服务器
- 23. Android客户端 - Java服务器:一台服务器可以同时支持多少个客户端?
- 24. 客户端 - 服务器架构与多个服务器
- 25. 与多个客户端通信 - Java服务器
- 26. 多个客户端连接服务器java
- 27. Web服务客户端Java
- 28. Java客户端服务
- 29. java web服务客户端
- 30. Java Web服务客户端:
谢谢!然而,我想知道为什么它不会在while(true)循环的每一次重复中产生一个新线程。对此有何评论? –
你能改说你的问题吗?什么不会产生一个新的线程?链接中的代码?或者你在代码中说你没有看到一个新的线程正在产生? – nook
没关系,我现在完全了解它...感谢您的回答,反正!我想知道是否每次执行while(true)循环时都会创建一个新线程。代码确实有用,所以谢谢! :d –