我必须创建一个套接字服务器来监听多个客户端。假设有 6 个客户端同时连接到服务器,每个客户端同时向服务器发送一些命令。如果这些客户端每 1 秒向服务器发送一次消息,我如何处理来自服务器端 6 个客户端的这些消息以将其存储在表中并向每个客户端确认。
我如何处理来自客户端的这些输入。我是否必须创建 6 个线程来处理来自客户端的这些输入。
请给我一个解决这个问题的想法。
最佳答案
为每个客户端连接创建一个新线程,并不断对每个线程中的流进行阻塞读取以查找要处理的数据。
class Server {
ClientThread threads[];
int size;
ServerSocket serverSocket;
boolean active;
Server() throws Exception {
/* initialize connection */
active = true;
listen();
}
void listen() throws Exception {
while ( active ) {
Socket clientSocket = serverSocket.accept();
threads[ size++ ] = new ClientThread( clientSocket );
threads[ size - 1 ].start();
}
}
}
class ClientThread extends Thread {
OutputStream out;
InputStream in;
boolean active;
ClientThread( Socket clientSocket ) throws Exception {
out = clientSocket.getOutputStream();
in = clientSocket.getInputStream();
}
public void run() {
active = true;
while ( active ) {
listen();
}
}
private void listen() {
try {
int res = process( in.read() );
out.write( res );
} catch ( Exception e ) {}
}
private int process( int b ) {
return -1;
}
}
关于java - java中具有多个客户端的套接字服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6688746/