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 objehect)
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;
}
}
}
}
此代码是一次连接客户端,但是如果其他客户端尝试与同一服务器聊天,我想显示服务器正忙的消息。该消息应该双方都做出回应。
答案 0 :(得分:1)
如果其他客户端尝试与同一服务器聊天,我想显示服务器正忙的消息。该消息应该在双方都做出回应
基本上不可能。 listen()
积压队列将导致后续客户端的连接尝试完成,并排队等待服务器的下一次accept()
呼叫。在您准备好接受下一个客户端之前,没有什么可以解决关闭侦听套接字的问题,这会引入各种时序约束。
您可以在拥有客户端时设置一个标志,并在接受另一个客户端时进行检查,并向他发送消息并断开连接,但我没有看到这一点。
双方都有什么关系?新客户的一面还有谁?该消息应该双方都做出回应
奇怪的要求。聊天服务器如何只需要一个客户端?他和谁聊天?