服务器 - 通过JUnit上的Socket进行客户端数据交换测试

时间:2017-09-15 19:56:27

标签: java sockets junit

我正在尝试通过我的JUnit类中的套接字测试服务器 - 客户端数据交换。我跟着说:

private static Socket clientSocket;
private static InputStream is;
private static PrintWriter pw;
private static Socket serverSocket;
private static final int PORT_NUMBER = 1154;

@BeforeClass
public static void init() throws IOException {
    ServerSocket sSocket = new ServerSocket(PORT_NUMBER);
    clientSocket = new Socket("localhost", PORT_NUMBER);
    is = clientSocket.getInputStream();

    serverSocket = sSocket.accept();
    OutputStream os = serverSocket.getOutputStream();
    pw = new PrintWriter(os, true);
}

@Test
public void testXPackage() throws IOException {
    for (int packageByte : X_PACKAGE) {
        pw.write(packageByte);
    }

    while (is.available() > 0) {
        System.out.println(is.read());
    }
}

is.available()始终为0。我缺少什么?

1 个答案:

答案 0 :(得分:1)

PrintWriter pm正在缓冲输出。完成写作后,您必须致电pm.flush()。例如:

@Test
public void testXPackage() throws IOException {
    for (int packageByte : X_PACKAGE) {
        pw.write(packageByte);
    }
    pm.flush(); // <<--- added this line.

    while (is.available() > 0) {
        System.out.println(is.read());
    }
}