在java中等待客户端响应的正确方法是什么?

时间:2012-12-28 16:20:28

标签: java sockets serversocket server-push

首先,如果您通过阅读未定义的HTTP响应来帮助我解决问题,我要感谢您。我接受了您的建议并从HTTP响应切换到原始Java套接字。但是我也遇到了一些问题。

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

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

在发送内容之前等待客户端发送内容。所以我决定使用:

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

如果任何输入互操作者得到这个空字符串,那么他们就不会做任何事情。

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

1 个答案:

答案 0 :(得分:2)

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

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

您似乎不希望客户提供任何意见。在这种情况下,嗯,根本不要打开输入流,也不要在输入流上调用readLine()(显然)。只要您想发送它,就可以直接发送给客户端。