Raspberry Не удается получить данные UDP со смартфона Android - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть локальная сеть через Wi-Fi с маршрутизатором Wi-Fi Netgear, и в этой сети есть несколько малиновых пис и Android-телефон.

Малина может отправлять и получать данные UDP друг другу, ноRaspberry не может получить данные UDP от моего приложения для телефона Android.

Малина, от которой я хочу, чтобы мой телефон получал данные 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ничего не получаетНет ошибки от Android-приложения в Java, нет ошибки от Rpi / Python

Что-нибудь отсутствует?Любая подсказка, которую я могу посмотреть в роутере?

1 Ответ

0 голосов
/ 14 декабря 2018

Забудьте о вопросе, он работает сразу после перезагрузки малины.Не знаю, почему это заставило этот ком работать.Но, по крайней мере, это показало, что код в порядке!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...