我试图遵循本书的代码,但是是用python 2编写的。起初,我试图运行本书的代码:
import socket
target_host = "www.google.com"
target_port = 80
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((target_host,target_port))
msg = "Hi!"
"""MSG = msg.encode()"""
client.send(msg)
response = client.recv(4096)
print(response)
然后它遇到此错误:TypeError:需要一个类似字节的对象,而不是'str'。我用这样的编码进行了更正:
import socket
target_host = "www.google.com"
target_port = 80
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((target_host,target_port))
msg = "Hi!"
MSG = msg.encode()
client.send(MSG)
response = client.recv(4096)
print(response)
但是现在,该代码什么也不会打印。有什么问题吗?
答案 0 :(得分:1)
这本书的代码发送为“ GET / HTTP / 1.1 \ Host:google.com \ r \ n \ r \ n”。 此代码意味着向Google发送获取请求,以便可以获取对您发送的请求的响应。 您的消息不是HTTP的请求,因此Google不会为您发送消息。