我正在用java编写一个基于套接字的服务器。客户端连接到它(网络浏览器),服务器发回一个简单的 html 代码并设置 cookie 以在客户端再次连接到它时识别。我正在使用 PrintStream 写入套接字,但刷新不起作用。我可以刷新的唯一方法是使用 shutdownoutput 或 close 并关闭套接字流。但我不希望这样,因为我在代码的几个地方多次读取/写入它。能做什么?无法从标签中获得任何帮助。我还尝试了其他缓冲写入器类,同样的问题。
问问题
9564 次
2 回答
4
啊,是的,愚蠢的问题,你只需要使用 pstream.writeln(""); 因为 breader.readLine() 读取直到找到 '\n' 字符。所以 write() 不起作用。
于 2010-02-25T08:34:18.273 回答
0
我会尝试调用此方法而不是刷新:
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 在内部调用刷新并记住错误状态)。
同样值得尝试的是使用 telnet 连接到服务器并查看数据是否立即返回,或者编写一个简单的 java 客户端套接字程序来检查(从网上剪切/粘贴一个)。
可能是浏览器决定在显示您的 html 之前故意等待更多输入(特别是如果 html 格式不完美)。我似乎记得过去自己也遇到过这个问题。
于 2010-02-24T22:02:26.977 回答