Python Socket Timing out
Question: I am attempting to open a socket to google on port 80 but for the life of me I
can't figure out why this is timing out. If I don't set a timeout it just
hangs indefinitely.

I don't think my companies firewall is blocking this request. I can navigate
to google.com in the browser so there shouldn't be any hangups here.

    
    
    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()
    


Answer: This will work:

    
    
    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()
    

What was wrong with you code: Your code was directly using the IP, i tried
looking up for the IP by hostname using `socket.gethostbyname()`. (_i dont
know why :P_)

You were expecting data to be returned without sending any. I used `s.sendall`
method to send a HTTP request (since you're using python3, the data must be
sent in bytes). Also decoded the data returned to print.

I hope, it will work for you too.

