如何通过 Python sock.send() 发送字符串以外的任何内容

发布于 2024-12-27 16:47:14 字数 453 浏览 2 评论 0原文

我对 Python 编程非常陌生,但出于必要,我必须快速地将一些东西组合在一起。

我正在尝试通过 UDP 发送一些数据,除了当我执行 socket.send() 时,我必须以字符串形式输入数据之外,我一切正常。这是我的程序,这样你就可以看到我在做什么:

import socket


IPADDR = '8.4.2.1'
PORTNUM = 10000

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, 0)

s.connect((IPADDR, PORTNUM))

s.send('test string'.encode('hex'))

s.close()

我怎样才能得到它,以便我可以用十六进制做一些事情,例如 s.send(ff:23:25:a1) ,这样当我查看数据时Wireshark 中的数据包部分,我看到 ff:23:25:a1

I'm very very new to programming in Python, but out of necessity I had to hack something together very quick.

I am trying to send some data over UDP, and I have everything working except for the fact that when I do socket.send(), I have to enter the data in string form. Here is my program so you can see what I am doing:

import socket


IPADDR = '8.4.2.1'
PORTNUM = 10000

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, 0)

s.connect((IPADDR, PORTNUM))

s.send('test string'.encode('hex'))

s.close()

How could I get it so that I can do something in hexadecimal like s.send(ff:23:25:a1) for example, so that when I look at the data portion of the packet in Wireshark, I see ff:23:25:a1

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

你列表最软的妹 2025-01-03 16:47:14

您使用的是 Python 2.7 还是 3.2?

在 3.2 中,您可以这样做:

data = bytes.fromhex('01AF23')
s.send(data)

数据将等于:

b'\x01\xAF\x23'

在 2.7 中,可以通过以下方式完成相同的操作:

data = '01AF23'.decode('hex')

Are you using Python 2.7 or 3.2?

In 3.2 you could do:

data = bytes.fromhex('01AF23')
s.send(data)

Data would then be equal to:

b'\x01\xAF\x23'

In 2.7 the same could be accomplished with:

data = '01AF23'.decode('hex')
☆獨立☆ 2025-01-03 16:47:14

您可以通过首先形成如下所示的十六进制值列表来发送十六进制值:

hex_list = [0x00, 0x00, 0x00, 0x01, 0x00, 0x0c, 0x00]

然后,将它们作为字节发送:

s.sendto(bytes(hex_list), addr1)

You can send the hex values by first forming a list of hex values like below:

hex_list = [0x00, 0x00, 0x00, 0x01, 0x00, 0x0c, 0x00]

then, send them as bytes:

s.sendto(bytes(hex_list), addr1)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文