У меня есть локальная сеть через 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
Что-нибудь отсутствует?Любая подсказка, которую я могу посмотреть в роутере?