sendto python_Python sendto似乎没有发送

博主是一名Python新手,在尝试使用Python的原始套接字发送字节数组作为UDP数据包到192.168.0.64的设备,但遇到问题。尽管sendto()返回值正确,数据包并未在Wireshark中显示,客户端也无法接收到数据。已排除Ostinato和Wireshark作为问题源头,怀疑可能是Python套接字的发送缓冲区问题。关闭套接字时似乎需要时间,可能与尝试刷新缓冲区有关。
摘要由CSDN通过智能技术生成

我是

Python新手并尝试使用套接字将字节数组作为原始数据包发送.我的IP是192.168.0.116,我发送给它的设备是192.168.0.64.该客户端设备是基于微控制器的单元,其执行我的代码以简单地嗅探以太网分组并检查特定模式.我正在使用UDP数据包并通过在我的PC中使用’Ostinato’来发送原始UDP数据包来尝试客户端固件.我正在使用Wireshark来监控网络数据包流.客户端似乎可以正常使用Ostinato发送的数据包.

但是当我尝试使用Python发送相同的数据包时(使用如下的原始数据包),它似乎没有吐出字节,因为我无法在Wireshark上看到任何内容,也没有客户端获取任何数据.但是sendto()的返回值是正确的.因此,似乎Python将字节数组提供给要发送的缓冲区(由OS?),但在那里停止.

import socket

CLNT_UDP_IP = '192.168.0.64'

CLNT_UDP_PORT = 5005

svr_sock = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_RAW)

send_data = [0x00, 0x11...]

send_data_arr = bytearray (send_data)

svr_sock.bind (('192.168.0.116',0))

bytes_send = svr_sock.sendto (send_data_arr, (CLNT_UDP_IP, CLNT_UDP_PORT))

svr_sock.close()

为清楚起见,我已经取出了try-except块.

我注意到的另一件事是当套接字关闭时,需要一些时间.如果我注释掉sendto语句,它会立即退出.因此,似乎套接字关闭正在尝试刷新发送缓冲区,而发送缓冲区无法发送数据包.

有任何想法吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值