
我是新手,如果我问哑巴问题,我感到抱歉.
我必须与服务器建立套接字连接.
客户端(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-客户端如何保持等待可能的服务器消息?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)