我有一个服务器 - 客户端对,我想在客户端创建一个侦听器,以获得新的服务器响应。我不知道如何做到这一点,现在我只能以直接同步的方式进行交互。为服务器套接字响应创建监听器?
这里是服务器:
public class TestServer {
public static void main(String[] args) throws Exception {
TestServer myServer = new TestServer();
myServer.run();
}
private void run() throws Exception {
ServerSocket mySS = new ServerSocket(4443);
while(true) {
Socket SS_accept = mySS.accept();
BufferedReader myBR = new BufferedReader(new InputStreamReader(SS_accept.getInputStream()));
String temp = myBR.readLine();
System.out.println(temp);
if (temp!=null) {
PrintStream serverPS = new PrintStream(SS_accept.getOutputStream());
serverPS.println("Response received: " + temp);
}
}
}
}
正如你可以看到,它发送一个响应时,它得到一个。但是一般来说,我不确定何时使用其他服务器发送响应,所以我想创建一个异步监听器(或者至少每半秒钟轮询服务器以获取响应)。
这里是我想要在客户端:
protected static String getServerResponse() throws IOException {
String temp;
try {
BufferedReader clientBR = new BufferedReader(new InputStreamReader(mySocket.getInputStream()));
temp = clientBR.readLine();
} catch (Exception e) {
temp = e.toString();
}
return temp;
}
而且仅作参考,是的,从客户端发送了数据服务器(其正确的System.out的数据)工作正常。但是,当我调用上述函数来尝试并检索服务器响应时,它只是挂起我的应用程序,这是一个Android应用程序,以防相关。
我想从一个函数中得到的只是能够询问服务器是否有数据并获取它,如果没有,那么不要崩溃我该死的应用程序。