我已经尝试过了encode()
,但是行不通。我不断得到,TypeError: must be str, not bytes
因为通常我会得到TypeError: a bytes-like object is required, not 'str'
。
ip = socket.gethostbyname("google.com")
port = 80
robot = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
payload = "Hello world"
try:
robot.connect((ip, port)))
robot.send('GET '+payload.encode()+' HTTP/1.1\n\n')
except socket.error:
print("connection lost")
robot.close()
我不明白我做错了什么?
如果查看的文档socket.send
,则可以看到第一个参数是bytes
,而不是字符串。您encode
使用特定编码的字符串将其转换为字节,然后decode
使用特定编码的字节将其转换为字符串:
robot.send(b'GET ' + payload.encode() + b' HTTP/1.1\n\n')
str.encode
并str.decode
默认为utf-8
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句