您可能想要的是多线程服务器。每次服务器接受连接时,服务器都会创建一个线程来处理向该客户端发送/接收。如果您不在服务器中使用线程,它一次只能处理一个连接。因此,正如您的意思,服务器无限循环并侦听传入连接:
while(true){
serverSocket.accept();
ClientHandler c = new ClientHandler(serverSocket);
每次接受连接时,都会创建一个 ClientHandler 类的实例。此类实现 Runnable,并在该套接字上使用 getInputStream 和 getOutputStream 循环传入消息:
public class ClientHandler implements Runnable{
DataInputStream in;
DataOutputStream out;
//ClientHandler constructor
public ClientHandler(Socket s) throws IOException{
in= new DataInputStream(socket.getInputStream());
out=new DataOutputStream(socket.getOutputStream());
thread.start();
}
运行方法:
public void run() {
while(true){
String temp="";
while ((temp = (String) in.readUTF()) != null){ // Read from the input stream each iteration. When temp is not null a message is recived
System.out.println(temp);
请注意,上面的代码没有考虑到可能发生的不同异常,而且非常基础。但它应该让您对如何实现使用 Sockets 的服务器有一个基本的了解。