繁体   English   中英

使用Java套接字API读取服务器响应

[英]Read server response using Java Sockets API

我创建了一个简单的类,该类将字符串发送到服务器,两者均使用Java Sockets API进行通信。 服务器读取客户端发送的内容,并以另一个字符串响应。 但是客户端无法读取该响应。

这是客户端类:

import java.io.IOException;
import java.net.Socket;

public class Client {

    public static void main(String[] args) throws IOException {
        Socket socket = new Socket("localhost", 8181);
        socket.getOutputStream().write("Hello".getBytes());

        int read;
        while ((read = socket.getInputStream().read()) > -1) {
            System.out.print((char) read);
        }

        socket.close();
    }

}

这是服务器类:

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {

    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(8181);

        while (true) {
            Socket socket = serverSocket.accept();
            int read;
            while ((read = socket.getInputStream().read()) > -1) {
                System.out.print((char) read);
            }

            socket.getOutputStream().write("Hi!".getBytes());
        }

    }

}

我认为问题可能出在客户端执行流程中,因为我不知道如何才能等待服务器响应。 换句话说,如何实现一个能够读取服务器响应的客户端?

  1. 您没有关闭插座。
  2. 服务器正在尝试读取直到流结束,然后发送答复。 流结束仅在对等方关闭连接时发生,因此即使您修复(1),也无法发送回复。 无论您的应用程序协议中意味着什么,您都需要阅读一条消息。

您需要刷新或关闭输出流。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM