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