.connect()函数和CONNECT方法之间有什么区别?

时间:2019-06-14 20:58:16

标签: python sockets http connect

我正在学习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服务器网址:端口

具体来说,什么时候适合使用其中一个?

1 个答案:

答案 0 :(得分:0)

.connect()函数将TCP套接字连接到远程服务器,该服务器允许将数据发送到服务器或从服务器接收数据。在您的情况下,您正在使用TCP套接字发送HTTP命令并接收相应的HTTP响应。

HTTP CONNECT方法完全不同。这是一种HTTP命令,包括GET(您正在使用的HTTP),HEADPOSTPUT等,可以通过您连接的套接字发送。 CONNECT与HTTP隧道有关(即让网络服务器将您的请求代理到另一台服务器)。

发送CONNECT命令时,基本上是在指示服务器将将来的HTTP命令转发到不同 HTTP服务器。因此,这就像以某种方式“连接”到另一台服务器。