我正在尝试通过我的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
。我缺少什么?
答案 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());
}
}