2 回答

TA贡献1869条经验 获得超4个赞
您没有收到服务器的响应,因为它仍在等待您的数据。在HTTP 协议中,您应该发送\r\n\r\n(CRLF CRLF) 以通知服务器有关请求标头的结束。
CRLF = '\r\n'
sentence = CRLF.join(['GET / HTTP/1.1', 'Host: ' + servername, 'Connection: close', '', ''])

TA贡献1856条经验 获得超17个赞
import socket
servername = 'google.com'
serverport = 80
clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sentence = '''GET / HTTP/1.1
Host: {}
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US;q=0.5,en;q=0.3
Connection: close
'''.format(servername)
print(sentence)
clientsocket.connect((servername, serverport))
clientsocket.send(sentence.encode())
new_sentence = clientsocket.recv(1024)
print('from server: {}'.format(new_sentence.decode()))
clientsocket.close()
添加回答
举报