【发布时间】:2010-12-01 14:52:06
【问题描述】:
我想将包含 XML 的 InputStream 从客户端发送到服务器。所述服务器使用Streaming API for XML (StAX) 操作 XML 流并将其发送回客户端。
我设法将 XML 发送到服务器,客户端收到答案,但没有退出,因为服务器从未完成从客户端读取 InputStream。
但是当服务器只是将输入转储到System.out 而不是发送某些内容时,读取完成...
edit我忘了提到IOUtils.copy() 在客户端的两个单独线程中运行。
这里有一些代码可以重现这一点,我在服务器上用IOUtils.copy() 替换了StAX 部分。
服务器
ServerSocket serverSocket = new ServerSocket(port);
Socket clientSocket = serverSocket.accept();
InputStream in = clientSocket.getInputStream();
OutputStream out = clientSocket.getOutputStream();
IOUtils.copy(in, out);
客户
Socket socket = new Socket(host, port);
FileInputStream fin = new FileInputStream(file);
OutputStream out = socket.getOutputStream();
IOUtils.copy(fin, out)
InputStream in = socket.getInputStream();
IOUtils.copy(in, System.out)
【问题讨论】:
标签: java sockets apache-commons-io