2010-05-19 50 views
1

我想做一个这样的客户端 - 服务器活动: 1.首先客户端发送/写入输出流 2.服务器响应与一些数据将被读取输入流 3.收到数据后,客户端再次向输出流发送/写入以响应数据已被接收从数据输入流中读取响应后,我可以写入数据输出流吗?

现在,是否必须关闭输出流并在执行第3步之前再次打开它? 如果有人可以给我一个片段,这将是非常有益的。谢谢

回答

1

你可以,如果你想,但你不需要。但是,在写入OutputStream以备缓冲时,您需要flush()

问题是要知道什么时候阅读。如果要读取的字节数可用并且性能不成问题,则可以使用阻止呼叫readFully。但这只是一种可能的策略。

+0

谢谢,但在我第二次写入流之前,我得到了RuntimeException Stream关闭的异常。我没有做关闭() – Sirius 2010-05-19 06:04:18

+0

我从其他评论中看到你正在做HTTP连接。如果是这样,这是有道理的。浏览器不会使用相同的TCP链接发送两个不同的POST。因此,基本上一旦第一个HTTP连接完成,它将被客户端关闭(导致服务器在尝试写入该连接时抛出闭合流错误)。当客户端发送第二个POST时,将启动另一个TCP链接。 – 2010-05-20 01:13:06

+0

如果是这样,你有解决这个问题。我真的被卡住了,第二个POST请求 – Sirius 2010-05-20 02:32:51

0

Google是你的朋友。见this

+0

感谢楚克,但我使用httpconnection,因为我正在处理PHP脚本,并且我想通过POST发送数据。服务器端会捕获它,然后执行一些数据库查询,将结果发送回客户端读取和处理。那么客户端会再次通过POST将处理结果发送回服务器。 – Sirius 2010-05-19 03:28:33

相关问题