import java.io.*;
import java.net.*;
class MultiServer
{
public static void main(String[] args) throws IOException
{
ServerSocket serverSock=new ServerSocket(3000);
//server socket creation
System.out.println("waiting for client.........");
Socket socket=serverSock.accept();
System.out.println("client connected ");
BufferedReader keyRead=new BufferedReader(new
inputStreamReader(System.in));
OutputStream ostream=socket.getOutputStream();//sending to client
PrintWriter pw=new PrintWriter(ostream,true);
InputStream istream=socket.getInputStream();//receiving from server (istream object)
BufferedReader receiveRead=new BufferedReader(new
InputStreamReader(istream));
String receiveMessage,sendMessage;
while(true)
{
if((receiveMessage=receiveRead.readLine())!= null)
{
System.out.println("client:>"+ receiveMessage);
}
sendMessage=keyRead.readLine();
pw.println(sendMessage);
System.out.flush();//flush the Stream
if(sendMessage.equals("bye"))
{
break;
}
}
}
}
此代码是一次连接一个客户端,但我想显示一条消息,说明如果其他客户端尝试与同一服务器聊天,则服务器正忙。该消息应该在双方上都有响应。
最佳答案
i want to display a message that the server is busy if other client attempts to chat with the same server. that message should respond on both the side
基本上不可能。 listen()
积压队列将导致后续客户端的连接尝试完成,并排队等候服务器的下一次 accept()
调用。在准备好接受下一个客户端之前,除了关闭监听套接字之外,您无能为力,这会引入各种计时限制。
你可以在有一个客户端时设置一个标志,并在接受另一个客户端时检查它,然后向他发送消息并断开他的连接,但我不明白这一点。
that message should respond on both sides
两边是什么?新客户这边还有谁?
奇怪的要求。聊天服务器怎么可能只需要一个客户端?他在和谁聊天?
关于java - 如何使用服务器套接字在Java中一次监听一个客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35125054/