java - 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没有错误
有什么遗漏吗?我可以在路由器中查看任何线索吗?
解决方案
忘记它在重新启动树莓后就可以工作的问题。不知道为什么这使该 com 工作。但至少它表明代码是好的!
推荐阅读
- ansible - 将变量传递给 AWX 或 Ansible Tower 中的连续播放
- laravel - 将元素添加到 laravel 路由 http://mywebsite/[element]/myroute - Laravel 和 VueJS
- c# - 当我们使用 JavaScript Asp.net C# 关闭任何浏览器时如何关闭浏览器会话
- azure - 使用 Azure Graph API 检索个人资料图片信息
- python - 在 PySpark 上运行 NuPIC 模型时出现 ImportError
- c# - system.Threading.Timer 是如何工作的?
- javascript - 在操作现有页面时移动函数中创建的元素
- ios - 通过 codepush 进行的 React-native Javascript 更改未反映在 iPhone 上
- java - 调试正确时失败的JUnit
- bash - 在 openshift docker 中作为 cron 执行脚本