2012-12-28 72 views
0

首先,如果您通过阅读未定义长度的HTTP响应帮助我解决了问题,我想感谢您。我接受了您的建议,并从HTTP响应切换到原始Java套接字。但我也有这个小问题。在java中等待客户端响应的正确方法是什么?

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

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

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

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

任何输入interpereters的得到这个空字符串,那么他们将不会做任何事情。

我的问题本质上是哪一个更好,如果它是第一个,我该如何继续检查文件以发出没有产生线程的需要的文件?

+0

已回答问题[here](http://stackoverflow.com/q/14077960/207421)。 – EJP

回答

2

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

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

看来你并不期待客户的任何意见。在这种情况下,根本不要打开输入流,也不要在输入流上调用readLine()(显然)。一旦你想发送它,就直接发送你需要发送给客户端的东西。

+0

我确实希望有双向通信(至少在开始握手时),但在此之后,它只会侦听关闭连接的命令:“servicedeath \ n” –

相关问题