udp java 无法接收_无法接收udp数据包

在Linux服务器上,一个Python程序发送UDP数据包到192.168.4.83设备并监听响应。尽管Wireshark显示设备正确回应,服务器却无法接收到这些响应数据包。问题可能与bind(0.0.0.0, UDP_PORT)不涵盖广播地址255.255.255.255有关。服务器的网络配置和接口信息显示正常。" 69258363,4933301,PAT链表序列合并算法,"['链表操作', '排序算法', '数据结构', '编程挑战']
摘要由CSDN通过智能技术生成

我不知道是否是网络配置的情况或我的软件出了什么问题 .

我有一个地址为 192.168.4.83 的设备 . 该设备直接连接到我的pc linux服务器,其地址为 192.168.4.11 .

我想使用python从服务器向设备发送UDP数据包 . 服务器也在监听响应 . 我有一个简单的python脚本来做到这一点 . 我发送使用:

self.sendSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

self.sendSocket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST,1)

sock.sendSocket.send(msg,('', UDP_PORT))

我听并绑定到0.0.0.0 . 代码非常简单:一个线程正在发送udp数据包,另一个线程有while(1)循环,它只接收数据包 .

这是监听代码:

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.255 ,设备已响应此数据包 - 来自 192.168.4.83 的数据包已发送到 255.255.255.255 . 看来,使用bind(0.0.0.0,port)并不涵盖 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

有线索吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值