Android 具有 Java 的应用程序 - udp 字符串未发送

Android application with Java - udp string doesn't send

我已经开始在 android studio 上使用 JAVA,我正在尝试创建一个简单的应用程序,它将向我的服务器发送一个 udp 字符串。

应用程序中的一切似乎都在工作(当我按下按钮时,我可以看到它被按下,当我使用 android studio 和调试时 - 该功能正在工作,我没有得到任何例外)。

我已经检查过,我的服务器正在侦听该端口(其他应用程序正在向该端口发送数据 - 它正在运行)。

但我认为应用程序没有发送给它。

这就是我的:

btnAction.setOnClickListener(new View.OnClickListener() {
    @override
    public void onClick(View v) {
        try {
            String messageStr = "test!";
            int server_port = 1111;
            DatagramSocket s = new DatagramSocket();
            InetAddress local = InetAddress.getByName("My.Public.Server.IP");
            int msg_length = messageStr.length();
            byte[] message = messageStr.getBytes();
            DatagramPacket p = new DatagramPacket(message, msg_length, local,server_port);
            s.send(p);
        } catch (Exception e) {
        }
    }
}

知道哪里出了问题吗?

提前致谢。

  1. 您必须在清单中拥有互联网许可 <uses-permission android:name="android.permission.INTERNET"/>
  2. 您必须 运行 在不同的线程(而不是在主线程)中执行与网络相关的任务

您的代码将如下所示:

btnAction.setOnClickListener(new View.OnClickListener() {
    @override
    public void onClick(View v) {
        new Thread("thread_udp"){
            public void run(){
                try {
                    String messageStr = "test!";
                    int server_port = 1111;
                    DatagramSocket s = new DatagramSocket();
                    InetAddress local = InetAddress.getByName("My.Public.Server.IP");
                    int msg_length = messageStr.length();
                    byte[] message = messageStr.getBytes();
                    DatagramPacket p = new DatagramPacket(message, msg_length, local,server_port);
                    s.send(p);
                } catch (Exception e) {
                    e.printStackTrace()
                }
            }
        }.start()

    }
}