Java Socket OutputStream没有刷新

时间:2010-02-05 15:51:52

标签: java sockets flush printstream

我在java中编写一个基于套接字的服务器。客户端连接到它(Web浏览器),服务器发回一个简单的html代码并设置cookie以识别下次客户端再次连接它。我使用PrintStream写入套接字,但刷新不起作用。我可以刷新的唯一方法是使用shutdownoutput或close并关闭套接字流。但我不希望这样,因为我在代码中的几个地方多次读/写。能做什么?无法从标签中获得任何帮助。 我也试过其他缓冲的编写器类,同样的问题。

2 个答案:

答案 0 :(得分:4)

啊,是的,愚蠢的问题,你只需要使用pstream.writeln(“”);因为breader.readLine()读取,直到找到'\ n'字符。 所以write()不起作用。

答案 1 :(得分:0)

我会尝试调用此方法而不是flush:

public boolean checkError()
Returns:
    True if and only if this stream has encountered an IOException other than InterruptedIOException, or the setError method has been invoked

查看是否由于某种原因导致刷新失败(checkError在内部调用flush并记住错误状态)。

另外值得尝试的是使用telnet连接到服务器并查看数据是否正在立即返回,或者编写一个简单的java客户端套接字程序来检查(从网上剪切/粘贴一个)。

可能是浏览器决定在显示你的html之前故意等待更多输入(特别是如果html没有完美形成)。我似乎记得过去曾经有过这个问题。