首页 > 解决方案 > Raspberry 无法从 Android 智能手机获取 UDP 数据

问题描述

我有一个带有 netgear wifi 路由器的本地网络,并且这个网络上有几个树莓派和一部安卓手机。

覆盆子可以相互发送和接收 UDP 数据,但覆盆子无法从我的 android 手机应用程序中获取 UDP 数据。

覆盆子我希望我的手机通过套接字从中获取 UDP 数据:

class listen(Thread) :
    def __init__(self):
        Thread.__init__(self)
        self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) #
        self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)    
        self.sock.bind(('', 5010))        
    def run(self) :
        global terminate
        while terminate == 0 :
            print ("wait for data from port 5010")
            data, addr = self.sock.recvfrom(1024) # buffer size is 1024
            print data 
        self.sock.close

这很有效,因为我从另一个树莓中获取数据。

android手机实现了这一点:

class SendThread extends Thread {

    int port = 5010;
    byte[] message = "welcome in Santa Clara".getBytes();
    DatagramPacket packet;
    InetAddress address;
    DatagramSocket socket;

    SendThread() {
        try {
            // Create a datagram socket
            this.socket = new DatagramSocket();

            // Get the internet address of the specified host
            this.address = InetAddress.getByName("10.0.0.8"); //  the address of the rpi

            this.packet = new DatagramPacket(this.message, this.message.length, this.address, this.port);

        } catch (Exception e) {
            System.err.println(e);
        }
    }

    public void run() {
        while (1 == 1)
        {
            try {
                TimeUnit.SECONDS.sleep(1);
                System.err.println("Sending message ...");
                this.socket.send(this.packet);
            } catch (Exception e) {
                System.err.println(e);
            }
        }
    }
}

我在清单中添加了:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

线程启动良好,但 Rpi 一无所获。java中的android应用程序没有错误,Rpi/python没有错误

有什么遗漏吗?我可以在路由器中查看任何线索吗?

标签: javaandroidpythonsocketsraspberry-pi

解决方案


忘记它在重新启动树莓后就可以工作的问题。不知道为什么这使该 com 工作。但至少它表明代码是好的!


推荐阅读