我正在尝试通过Python3中的sockets.send函数发送Get请求到谷歌服务器,请求如下:
GET / HTTP/1.1\r\nHost: www.google.com\r\n\r\n
以下是发送代码:
import socket
buffer = input() #filled the with 'GET / HTTP/1.1\r\nHost: www.google.com\r\n\r\n'
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
target = "www.google.com"
port = 80
client.connect((target,port))
client.send(buffer.encode())
while True:
recv_len = 1
response = ""
while recv_len:
data = client.recv(4096).decode(errors="ignore")
recv_len = len(data)
response += data
if recv_len < 4096:
break
print(response)
但是我没有从服务器收到任何数据。有人能帮我解决这个问题吗?我尝试了类似的问题,但大多数集中在请求中使用 \n
。
print
语句实际上会打印数据。不清楚您在做什么不同的事情。我建议您展示出您遇到问题的完整代码,而不仅仅是您认为相关的部分。请参阅如何创建最小可重现示例。 - Steffen Ullrichinput
来获取字符串。我知道在字符串中没有简单的方法输入\r
(回车)或者\n
(换行)。如果你在输入提示符中键入\r\n
,你将会得到四个字符反斜杠、r、反斜杠、n(作为 Python 字符串的'\\r\\n'
),而不是两个字符'\r\n'
(或者'\x0d\x0a'
)。 - Serge Ballesta