0

首先,如果您帮助我解决了读取未定义长度 HTTP 响应的问题,我要感谢您。我接受了您的建议,并从 HTTP 响应切换到原始 Java 套接字。但我也有这个小问题。

推送服务器的本质是在收到东西时将它们推送到客户端(在我的情况下,系统使用一个标有设备 ID 的文件。)问题在于 Java 教程中的 KnockKnock 示例,他们的代码:

while ((inputLine = in.readLine()) != null) {...   

在发送自己的东西之前等待客户端发送一些东西。所以我决定使用:

while (true) {
    if ((inputLine=in.readLine())==null) inputLine="";
    ...

如果任何输入解释器得到这个空字符串,那么他们不会做任何事情。

我的问题本质上是哪个更好,如果是第一个,我如何继续检查文件以发送所需的内容而不产生线程?

4

1 回答 1

2

第一个实现了为 KnockKnock 示例设想的协议:客户端发送“KnockKnock”,服务器响应。

第二个意义不大。如果客户端有一个与服务器打开的输出流,并且服务器调用readLine(),这意味着它正在等待来自客户端的一行。并且调用将阻塞,直到客户端发送一行,或关闭套接字。

看来您不希望客户提供任何输入。在这种情况下,好吧,根本不要打开输入流,也不要调用readLine()输入流(显然)。只要您想发送,就将您需要发送的内容直接发送给客户端。

于 2012-12-28T16:29:43.570 回答