我正在学习Python;具体来说,我正在学习网络架构和HTTP请求。下面的课程示例演示了如何编写简单的Web浏览器。
import socket
mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect(('data.pr4e.org', 80))
cmd = 'GET http://data.pr4e.org/romeo.txt HTTP/1.0\r\n\r\n'.encode()
mysock.send(cmd)
while True:
data = mysock.recv(512)
if (len(data) < 1):
break
print(data.decode(),end='')
mysock.close()
我了解到.connect()
函数开始双向通信,实际上是“打开隧道”。语法为socketname.connect(('address'),port)
但是,我想知道该函数与here中所述的CONNECT方法之间是否存在差异。该语法是: CONNECT服务器网址:端口
具体来说,什么时候适合使用其中一个?
答案 0 :(得分:0)
.connect()
函数将TCP套接字连接到远程服务器,该服务器允许将数据发送到服务器或从服务器接收数据。在您的情况下,您正在使用TCP套接字发送HTTP命令并接收相应的HTTP响应。
HTTP CONNECT
方法完全不同。这是一种HTTP命令,包括GET
(您正在使用的HTTP),HEAD
,POST
,PUT
等,可以通过您连接的套接字发送。 CONNECT
与HTTP隧道有关(即让网络服务器将您的请求代理到另一台服务器)。
发送CONNECT
命令时,基本上是在指示服务器将将来的HTTP命令转发到不同 HTTP服务器。因此,这就像以某种方式“连接”到另一台服务器。