为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Java 的 Android 应用程序 - udp 字符串不发送

使用 Java 的 Android 应用程序 - udp 字符串不发送

杨__羊羊 2023-06-28 16:00:18
我已经开始在 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 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

  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()


    }

}


查看完整回答
反对 回复 2023-06-28
  • 1 回答
  • 0 关注
  • 148 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信