**
将有多个客户端在端口 6069 上向服务器发送消息。我希望同时处理多个请求,但我不确定下面的代码是否可以做到。
套接字的队列中会有请求。由于只有一个线程,它将对一个请求执行迭代,然后从队列中获取下一个请求。如何同时为多个客户提供服务?
**
这是创建线程以监听端口 6069 的类。
public class NetworkModule extends Thread {
private ServerSocket serverSocket;
public NetworkModule(int port) throws IOException {
serverSocket = new ServerSocket(port);
}
public void run() {
while (true) {
/* Here I read strings from the inputstream and write
to outputstream corresponding to "serverSocket" and call
functions from other classes*/
}
}
below is how Main class looks like
public class Main
{
public static void main(String[] args)
{
try
{
int port=6069;
Thread t = new NetworkModule(port);
t.start();
}
catch(IOException e)
{
e.printStackTrace();
}
}
}
最佳答案
如果你可以隔离客户端处理方法,比如在一个新的类 ClientHandler
中,它也扩展了 Thread
,你在 run()
中阅读和写入流。然后在 NetworkModule
的 run()
中:
while (true) {
Socket socket = serverSocket.accept(); // blocks until new client connects
ClientHandler handler = new ClientHandler(socket); // pass reference to socket
handler.start(); // start executing in new thread
}
通常,实现 Runnable
而不是 extending Thread
更好,因为由于 Java 继承模型,您可以实现许多接口(interface)但只能从单个类扩展。
关于java - 如何让多个线程使用同一个socket读写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30149214/