【问题标题】:Android Studio: Check if server socket is on/listening every X minutesAndroid Studio:检查服务器套接字是否每 X 分钟打开/侦听
【发布时间】:2016-08-19 07:06:00
【问题描述】:

我正在制作一个 Android 应用程序,它每 X 分钟检查一次 TCP/IP 服务器套接字是否已在我的计算机上打开。如果是这样,它会进行连接并从中读取数据,如果不是,它会等待并尝试在 X 分钟内再次连接...

当我先打开服务器然后打开客户端(手动)时,下面的代码工作一次,但我无法让客户端继续检查服务器套接字是否根据时间打开/侦听。 异步方法不起作用,因为我不能延迟它,也不能让 Handler 方法工作。

CheckserversocketeveryXmin.java

public class AppListener extends Async {

@Override
public void handleMessage(Message msg) {

    final Handler h = new Handler();
    final int delay = 5000; //milliseconds

    h.postDelayed(new Runnable() {
        public void run() {


            try {

                String msg_received = null;

                System.out.println("LISTENING FOR LAST INSTALLED APP");


                System.out.println("TRY");

                Socket socket = new Socket("85.190.178.23", 5050);

                // Get data sent through socket
                DataInputStream DIS = new DataInputStream(socket.getInputStream());

                System.out.println("DataInputStream Started");

                // read data that got sent
                msg_received = DIS.readUTF();

                System.out.println("Message from server" + msg_received);

                // Might not want to close socket, or only the first string will be sent and none after
                socket.close();


            } catch (Exception e) {
                System.out.println("Did not receive string");
            }


            h.postDelayed(this, delay);
        }
    }, delay);

}

}

现在我可能会处理这个错误,将此代码放入我的主 Activity 中,出于某种原因,它每 x 秒尝试一次,但从不连接,因为如果我消除延迟,它会连接一次。

在异步中放置一个无限循环(我知道这在技术上并不好)并在其中等待/延迟是一个好方法吗?如果是这样,你们有没有一个指针:)

【问题讨论】:

    标签: android sockets networking tcp ip


    【解决方案1】:

    将此代码放入我的主 Activity,由于某种原因,它每 x 秒尝试一次,但从不连接

    您可能是 SDK 11+,因此您的处理程序正在抛出一个 NetworkOnMainThreadException,您正在将它吞入您的 catch 块中

    如果我消除延迟,它会在此处进行一次连接

    您在handleMessage 中声明了您的Handler 变量,因此在将您的runnable 发布到句柄后,您会立即删除对它的所有引用;它可能正在被垃圾收集。在 AppListener 类中创建两个变量成员变量

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-08
      • 2017-07-20
      • 1970-01-01
      • 2011-12-27
      • 2017-07-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多