Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我无法通过三星S9+的DatagramSocket发送DatagramPack(我使用的线程不是UI线程)_Android_Sockets_Udp_Send - Fatal编程技术网

Android 我无法通过三星S9+的DatagramSocket发送DatagramPack(我使用的线程不是UI线程)

Android 我无法通过三星S9+的DatagramSocket发送DatagramPack(我使用的线程不是UI线程),android,sockets,udp,send,Android,Sockets,Udp,Send,我尝试从手机向PC发送UDP数据包–IP 192.168.1.113,在PC上我使用UDP服务器端口55777的“数据包发送器”。 但它不工作,我已经从Excel中的VBA脚本向数据包发送者发送了UDP数据包,它工作了,我还可以通过 我下载到手机上的UDP应用程序,发送到“数据包发送者” 我使用: 安卓工作室3.5 SDK平台8.1 手机:三星S9+ 我已将INTERNET权限添加到清单中: 我从一个新线程发送数据包,因为主线程不允许发送数据包,下面的代码是我继续之前的第一步,不过需要先让它工作

我尝试从手机向PC发送UDP数据包–IP 192.168.1.113,在PC上我使用UDP服务器端口55777的“数据包发送器”。 但它不工作,我已经从Excel中的VBA脚本向数据包发送者发送了UDP数据包,它工作了,我还可以通过 我下载到手机上的UDP应用程序,发送到“数据包发送者”

我使用: 安卓工作室3.5 SDK平台8.1 手机:三星S9+

我已将INTERNET权限添加到清单中:

我从一个新线程发送数据包,因为主线程不允许发送数据包,下面的代码是我继续之前的第一步,不过需要先让它工作

public class MainActivity extends AppCompatActivity {

    private Handler mainHandler = new Handler();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }

    public void startThread(View view) {

        ExampleRunnable runnable = new ExampleRunnable(10);
        new Thread(runnable).start();

    }


    class ExampleRunnable implements Runnable {

        @Override
        public void run() {

            DatagramSocket ds = null;

            String message = "Hello";
            try{
                ds = new DatagramSocket();
                InetAddress serverAddr = InetAddress.getByName("192.168.1.113");
                DatagramPacket dp;
                dp = new DatagramPacket(message.getBytes(), message.length(), serverAddr, 55777);
                ds.send(dp);

            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (ds != null) {
                    ds.close();
                }
            }

        }
    }
}

在回答这个问题之前,有几件事需要确认。您可以提供堆栈跟踪或任何错误(如果有)。在您的情况下,如果没有编程错误,您应该检查一次防火墙。为端口55777上的传入连接请求添加新的防火墙规则

没有互联网,它是基于本地连接的。我说得对吗?如果程序有任何错误/响应,请在此处发布日志。添加堆栈跟踪以了解问题。您可以按照此代码进行操作。