Python套接字超时

Python套接字超时,python,sockets,Python,Sockets,我正试图在80端口上打开谷歌的一个套接字,但就我个人而言,我不明白这为什么会超时。如果我不设置超时,它就会无限期地挂起 我不认为我的公司防火墙阻止了这个请求。我可以在浏览器中导航到google.com,所以这里不应该有任何挂断 import socket HOST = '173.194.121.39' PORT = 80 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((HOST,

我正试图在80端口上打开谷歌的一个套接字,但就我个人而言,我不明白这为什么会超时。如果我不设置超时,它就会无限期地挂起

我不认为我的公司防火墙阻止了这个请求。我可以在浏览器中导航到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,我尝试使用
socket.gethostbyname()
按主机名查找IP。(我不知道为什么:P)

您希望返回数据而不发送任何数据。我使用了
s.sendall
方法发送HTTP请求(因为您使用的是python3,所以数据必须以字节为单位发送)。还对返回打印的数据进行了解码


我希望,它也会对你有用。

不要理会我的评论。这是无用的:-)检查浏览器的配置以确定是否已建立HTTP代理。如果是这样的话,你的电脑可能无法连接到谷歌。这看起来像是一个代理问题。即使您的公司没有阻止该网站,代理也需要身份验证和访问google.com的请求。我会说和“Rob”一样ᵩ: 检查您是否在任何地方有代理身份验证。我看不出您在哪里发出了“GET”。为什么您希望收到任何东西?@stark我使用的是Python套接字文档的一个(修改非常弱的)版本