Java:TCP Socket,服务器可以先发出第一个请求吗?

时间:2016-10-14 15:34:31

标签: java sockets server request client

按照此图表,我设法将客户端与其服务器连接,并完美地进行通信:

TCP Diagram

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

我这样做了(客户方):

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();

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

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

1 个答案:

答案 0 :(得分:2)

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