所以我正在尝试用Java创建一个服务器/客户端来提高我的技能。但是..出于某种原因,虽然每次服务器接受连接时都会创建一个新线程,但事情就是不起作用,只有一个客户端工作。
这是代码:
while (true) {
Socket client = null;
client = server.accept();
new Thread(new Server(client)).run();
}
我不知道为什么会这样。我使用了一个教程,然而,事情不起作用。 谢谢!
答案 0 :(得分:0)
所以,这是问题的解决方案。
“那么启动和运行方法有什么区别?主要区别 是程序调用start()方法时创建一个新的Thread 如果你调用的话,run()方法中的代码在新的Thread中执行 run()方法直接没有创建新的线程并且运行代码() 将在当前线程上执行。 引自http://javarevisited.blogspot.com/2012/03/difference-between-start-and-run-method.html
将.run()函数更改为.start()解决了这个问题。 享受。
答案 1 :(得分:0)
Kryonet是一个非常好的Java库,它为使用NIO进行高效的TCP和UDP客户端/服务器网络通信提供了一个干净而简单的API。
它将使您的网络编程更加轻松,您可以更好地了解如何编写客户端和服务器端代码。
我建议您首先使用此库尝试您的网络编程技能,然后尝试实现自己的。