如何通过 Python sock.send() 发送字符串以外的任何内容
我对 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您使用的是 Python 2.7 还是 3.2?
在 3.2 中,您可以这样做:
数据将等于:
在 2.7 中,可以通过以下方式完成相同的操作:
Are you using Python 2.7 or 3.2?
In 3.2 you could do:
Data would then be equal to:
In 2.7 the same could be accomplished with:
您可以通过首先形成如下所示的十六进制值列表来发送十六进制值:
然后,将它们作为字节发送:
You can send the hex values by first forming a list of hex values like below:
then, send them as bytes: