小编shy*_*ypy的帖子

使用 IOUtils.copy() 时套接字流挂起

我想InputStream从客户端发送一个包含 XML 到服务器。所述服务器使用 XML 流操作Streaming API for XML (StAX)并将其发送回客户端。

我设法将 XML 发送到服务器,客户端收到答案,但没有退出,因为服务器从未完成读取InputStream客户端的表单。但是当服务器只是将输入转储到System.out而不是发送某些东西时,读取就完成了......

编辑我忘了提到它IOUtils.copy()在客户端上的两个独立线程中运行。

这里有一些代码来重现这一点,我已经在服务器上替换了该StAX部分IOUtils.copy()

服务器

ServerSocket serverSocket = new ServerSocket(port);
Socket clientSocket = serverSocket.accept();

InputStream in = clientSocket.getInputStream();
OutputStream out = clientSocket.getOutputStream();
IOUtils.copy(in, out);
Run Code Online (Sandbox Code Playgroud)

客户

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)
Run Code Online (Sandbox Code Playgroud)

java sockets apache-commons-io

3
推荐指数
1
解决办法
6588
查看次数

标签 统计

apache-commons-io ×1

java ×1

sockets ×1