当我执行这个脚本时,我总是得到一个错误的请求输出。我不明白出了什么问题。我想打印cmd变量的输出,我看到一个b'作为前缀。我认为这就是它作为请求发送到服务器的方式,结果它失败了。顺便说一下,它是python3.7.0
我的代码片段如下:
import socket
brows = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
brows.connect(('data.pr4e.org', 80))
cmd = 'GET http://data.pr4e.org/romeo.txt HTTP/1.0\n\n'.encode()
print(cmd)
brows.send(cmd)
while True:
data = brows.recv(512)
if (len(data) < 1):
break
print(data.decode())
brows.close()
我的输出如下:
我对Python完全陌生。有人能帮我解决这个问题吗
我认为
b'
不是问题所在。这就是bytes
对象(这就是.encode()
返回的内容)被打印或转换成带有str()
的字符串的方式我不知道你的服务器是什么样子的,但我猜问题出在请求中,而不是Python
不过,我要提出另一个建议。使用
with
确保套接字在结束时自动关闭,无论是否出现故障。实际上,如果程序有异常,套接字将不会关闭。with
语法告诉Python尝试运行它,完成后自动关闭它您甚至不需要在结尾显式调用
.close()
编辑:为了澄清,套接字只在
with
块中打开相关问题 更多 >
编程相关推荐