我试图在端口80上为google打开一个套接字,但是对于我来说,我不知道为什么会超时。如果我不设置超时,它将无限期地挂起。
我认为我的公司防火墙没有阻止此请求。我可以在浏览器中导航到google.com,因此此处不应有任何挂断。
import socket
HOST = '173.194.121.39'
PORT = 80
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.settimeout(20)
data = s.recv(1024)
print(data)
s.close()
这将起作用:
import socket
HOST = 'www.google.com'
PORT = 80
IP = socket.gethostbyname(HOST)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((IP, PORT))
message = b"GET / HTTP/1.1\r\n\r\n"
s.sendall(message)
data = s.recv(1024)
print(data.decode('utf-8'))
s.close()
您的代码有什么问题:您的代码是直接使用IP的,我尝试使用使用主机名查找IP socket.gethostbyname()
。(我不知道为什么:P)
您原本希望返回的数据不发送任何数据。我使用了s.sendall
一种方法来发送HTTP请求(由于您使用的是python3,因此数据必须以字节为单位)。还解码返回打印的数据。
我希望它也对您有用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句