android-客户端如何保持等待可能的服务器消息?

android-客户端如何保持等待可能的服务器消息?,第1张

概述我是新手,如果我问哑巴问题,我感到抱歉.我必须与服务器建立套接字连接.客户端(Android设备)必须向服务器发送消息,并等待确认消息.然后,如果服务器在30秒钟内未从客户端收到任何消息,则发送请求确认消息的请求.我所做的是第一部分:客户端发送消息并读取响应.我要问的是:客户端如何等

我是新手,如果我问哑巴问题,我感到抱歉.
我必须与服务器建立套接字连接.
客户端(Android设备)必须向服务器发送消息,并等待确认消息.然后,如果服务器在30秒钟内未从客户端收到任何消息,则发送请求确认消息的请求.
我所做的是第一部分:客户端发送消息并读取响应.
我要问的是:客户端如何等待服务器发出的可能消息?
这是我写的代码:

在onCreate方法中:

Thread myThread = new Thread(new myRunnable());myThread.start();

这是myRunnable:

public class myRunnable implements Runnable{  public voID run(){    try{      Socket socket = new Socket(serverIp, serverPort);      inputStream is = socket.getinputStream();      OutputStream out = socket.getoutputStream();      out.write(byteBuffer.array());      out.flush();      byte[] bbb = new byte[1024];      // Receive message from server      int bytesToRead= is.read(bbb);      is.close();      out.close();      socket.close();

连续读取 *** 作返回-1,那么如何保持等待服务器消息?
非常感谢您的任何建议.

解决方法:

您不应该关闭信息流.关闭流时,与服务器的通信也会关闭.通常,服务器通信发生在无限循环中.像这样:

public class myRunnable implements Runnable{  public voID run(){    try{      Socket socket = new Socket(serverIp, serverPort);      inputStream is = socket.getinputStream();      OutputStream out = socket.getoutputStream();      out.write(byteBuffer.array());      out.flush();      byte[] bbb = new byte[1024];      while (true) {         // Read next message.         bytesToRead = is.read(bbb);         // handle message...         // If you need to stop communication use 'break' to exit loop;      }      is.close();      out.close();      socket.close();

因此线程停止在bytesToRead = is.read(bbb)行上,直到服务器发送任何消息为止,此后它将以您想要的任何方式处理消息并返回读取下一条消息.如果需要停止通讯,请使用break退出循环.

总结

以上是内存溢出为你收集整理的android-客户端如何保持等待可能的服务器消息?全部内容,希望文章能够帮你解决android-客户端如何保持等待可能的服务器消息?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1086207.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存