【问题标题】:Android application with Java - udp string doesn't send使用 Java 的 Android 应用程序 - udp 字符串不发送
【发布时间】:2023-03-07 22:21:01
【问题描述】:

我已经开始在 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) {
        }
    }
}

知道有什么问题吗?

提前致谢。

【问题讨论】:

  • 尝试使用不同的线程发送。您可以从另一个帖子here 获得帮助
  • 我看看蚂蚁试试,谢谢,
  • 为我找到了一个可行的解决方案 - stackoverflow.com/questions/6343166/…
  • 我的意思是在 hte 调试中它根本不会进入 catch 部分,t

标签: java android udp client


【解决方案1】:
  1. 您必须在清单<uses-permission android:name="android.permission.INTERNET"/> 中拥有 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()

    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    • 1970-01-01
    • 2023-04-10
    • 2018-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多