我不知道是网络配置还是我的软件出了问题。
self.sendSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
self.sendSocket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST,1)
sock.sendSocket.send(msg,('<boradcast>', UDP_PORT))
这是监听代码:
class CUdp(threading.Thread):
def __init__(self, log=False):
threading.Thread.__init__(self)
self.running = True
self.listenSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
self.listenSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.listenSocket.bind(("", UDP_PORT))
self.last_time = 0
self.now = 0
self.log = log
def run(self):
global sent_time
while(self.running):
data, addr = self.listenSocket.recvfrom(1024)
if data != None:
recv_time = time.time()
myprint("[RECV " + str(datetime.datetime.now()) + "] (len=" + str(len(data)) +") : " + str(data)+"\n", self.log)
奇怪的是,在wireshark上,我可以看到:数据包已从192.168.4.11
发送到255.255.255
,并且设备已对此数据包作出响应--来自192.168.4.83
的数据包已发送到255.255.255
。使用bind(0.0.0.0,端口)似乎不能涵盖255.255.255.255
。我迷路了,一点主意都没有。
ifconfig为:
eth0 Link encap:Ethernet HWaddr 2C:41:38:9B:BF:CA
inet addr:192.168.4.11 Bcast:192.168.4.255 Mask:255.255.255.0
inet6 addr: fe80::2e41:38ff:fe9b:bfca/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:34 errors:0 dropped:0 overruns:0 frame:0
TX packets:413 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:5050 (4.9 KiB) TX bytes:26688 (26.0 KiB)
Interrupt:17
假设所有代码都编写得正确,这可能只是linux防火墙的一个问题。您可以将您的ip地址添加到iptables中,或者您可以在安全的网络环境中拆除防火墙:
/etc/init.d/iptables stop
我有一个示例代码如下,套接字绑定到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)能够捕获数据包 我在网上搜索过,但找不到解决办法。
我已经在互联网上搜索了一两个星期,想找到一个UDP客户端程序,它可以同时发送和接收数据,但是对于c#来说,没有关于这个主题的内容。在过去的几天里,我尝试创建一个UDP客户端,其中包含一个接收数据的线程。 发送UDP数据包效果很好,但程序无法接收我发送到的服务器,我相信服务器正在将所有数据包发送到不同的端口。 我如何修复这个程序? 有没有一种更简单的方法来进行UDP编程,比如用于TCP的Stream
我正在尝试接收通过LAN电缆连接的FPGA发送的UDP广播数据包。FPGA向端口5001发送连续数据包。 我的python接收器代码很简单: 我使用Wireshark进行了检查,发现PC接收数据包。但是,我的Python代码没有。我还检查了从另一个本地python代码发送数据包的情况(发送到相同的地址和端口),并且我的接收器获得了这些数据包。
我已经读过一些关于端口转换的内容,现在我想测试它。 我有一台NAT路由器后面的本地机器和一台带有外部IP地址的服务器。 这就是我如何将数据包从机器上的第5000个端口发送到服务器上的第4000个端口。 之后,我开始在本地机器上收听第 5000 次 在服务器上,当我看到来自的传入UDP时,我会向相同的和 发送响应(对其他端口和地址使用相同的脚本)。但我从未在本地机器上收到此响应。为什么? 此外,当服
我正在尝试接收raspberry PI上的UDP数据包。我已经创建了一个简单的java程序来连接网络。(我下面有所有相关代码) 我不能从广播中接收到任何东西,在一个覆盆子圆周率。但当我在另一台计算机上运行此代码时,我能够从广播中接收数据包。这让我相信java没有被授予创建套接字、绑定端口的权限,并且它不是代码,而是raspberry PI上的一种安全措施。 null 没有运气。如有任何建议或帮助,