我正在尝试接收raspberry PI上的UDP数据包。我已经创建了一个简单的java程序来连接网络。(我下面有所有相关代码)
String myNetworkAddress = "10.0.0.11";
String myBroadcastAddress = "10.255.255.255";
// Setup network connection
try {
InetAddress nicAddress = InetAddress.getByName(myNetworkAddress);
InetAddress baddr = InetAddress.getByName(myBroadcastAddress);
dmx = new ArtNet(nicAddress, baddr);
udpsocket = new DatagramSocket(null);
udpsocket.setReuseAddress(true);
udpsocket.bind(new InetSocketAddress(nicAddress, dmx.getPort()));
udpsocket.setBroadcast(true);
udpsocket.setSoTimeout(1000);
System.out.println("Opened socket " + udpsocket.getLocalAddress() + ":" + udpsocket.getLocalPort());
} catch (Exception e) {
System.out.println("can't open socket " + e);
}
while (true) {
if (udpsocket != null) {
if (dmx.readPacket(udpsocket)) {
i = dmx.getPacket();
// read packet and process
}
}
}
我不能从广播中接收到任何东西,在一个覆盆子圆周率。但当我在另一台计算机上运行此代码时,我能够从广播中接收数据包。这让我相信java没有被授予创建套接字、绑定端口的权限,并且它不是代码,而是raspberry PI上的一种安全措施。
eth0 Link encap:Ethernet HWaddr b8:27:eb:11:11:11
inet addr:192.168.1.48 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:351 errors:0 dropped:0 overruns:0 frame:0
TX packets:376 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:25333 (24.7 KiB) TX bytes:77137 (75.3 KiB)
timeout 10;
lease {
interface "eth0";
fixed-address 10.0.0.10;
option broadcast-address 10.255.255.255;
option subnet-mask 255.0.0.0;
option host-name "node.local";
renew 2 2022/1/1 00:00:01;
rebind 2 2022/1/1 00:00:01;
expire 2 2022/1/1 00:00:01;
}
没有运气。如有任何建议或帮助,我们将不胜感激。
通过绑定NicAddress,它只接受来自网络地址的传入数据包。绑定到0.0.0.0将允许来自广播IP和其他IP地址的传入协议
我正在尝试接收通过LAN电缆连接的FPGA发送的UDP广播数据包。FPGA向端口5001发送连续数据包。 我的python接收器代码很简单: 我使用Wireshark进行了检查,发现PC接收数据包。但是,我的Python代码没有。我还检查了从另一个本地python代码发送数据包的情况(发送到相同的地址和端口),并且我的接收器获得了这些数据包。
我们现有的软件定期向本地子网(X.X.X.255)上的特定端口(7125)广播UDP数据包。我们的监控软件运行在HP-UX(11.11)上,可以接收这些数据包,没有问题。然而,在将监控软件移植到Linux(RHEL6.1)之后,我们发现它并没有接收到广播数据包。tcpdump显示了到达Linux主机的数据包,但内核不会将它们发送给我们的软件。 我使用了几个Python2.x脚本,这些脚本模拟了监控
我不知道是网络配置还是我的软件出了问题。 这是监听代码: 奇怪的是,在wireshark上,我可以看到:数据包已从发送到,并且设备已对此数据包作出响应--来自的数据包已发送到。使用bind(0.0.0.0,端口)似乎不能涵盖。我迷路了,一点主意都没有。 ifconfig为:
问题内容: 我正在尝试通过recvfrom接收数据包的一部分。它实际上是这样的: 数据是这样发送的: 因此,想法是先读取一些元数据,然后再决定是否接收其他内容。问题是如果第二个缓冲区(serialised_buf)开头,我会收到4个’/ 0’字节。这似乎不是序列化的问题,我以前使用过序列化,并且在我一次接收到整个数据包(元和数据)的同时,一切都很酷。关于如何解决的任何想法? PS。我知道我可以跳过
本章介绍 UDP 介绍 ChannelHandler, Decoder, 和 Encoder 引导基于 Netty 的应用 前面的章节都是在示例中使用 TCP 协议,这一章,我们将使用UDP。UDP是一种无连接协议,若需要很高的性能和对数据的完成性没有严格要求,那使用 UDP 是一个很好的方法。最著名的基于UDP协议的是用来域名解析的DNS。这一章将给你一个好的理解的无连接协议所以你能够做出明智的
我有一个示例代码如下,套接字绑定到IP10.10.88.11和端口9876。我用下面的wireshark测试了2种情况。两台电脑都在同一个子网中。 从同一PC发送UDP数据包(10.10.88.11)-UDP服务器能够接收 从另一台电脑发送UDP数据包(10.10.88.10)-UDP服务器无法接收,但Wireshark(在10.10.88.11)能够捕获数据包 我在网上搜索过,但找不到解决办法。