遵循此图,我设法将客户端与其服务器连接,并实现了完美的通信:

java - Java:TCP套接字,服务器可以首先发出第一个请求吗?-LMLPHP

问题是:是否可以让服务器先发出请求?
如果是,我如何配置客户端以使其一直等待服务器的呼叫?

我这样做了(客户端):

Socket serverSocket = new Socket(Network.serverInetAddress, Network.SERVICE_PORT);

while (!Thread.currentThread().isInterrupted()) {
    ObjectInputStream objectInputStream = new ObjectInputStream(new BufferedInputStream(serverSocket.getInputStream()));
    MessageContent messageContent = (MessageContent) objectInputStream.readObject();

    Network.processMessage(messageContent);
}

serverSocket.close();


但是客户端没有收到服务器的消息,尽管我没有在客户端或服务器的日志中看到任何错误。

如何解决此问题,并将消息从服​​务器“广播”到所有连接的客户端?谢谢! :)

最佳答案

是的,可能的。您应该指示必须等待服务器消息的客户端(您可以通过套接字上的read命令来执行此操作,因为它是阻塞命令)。
在服务器上,您唯一要做的就是在客户端连接接受后写入数据。

10-07 14:25