В чем разница между функцией .connect () и методом CONNECT? - PullRequest
0 голосов
/ 14 июня 2019

я изучаю Python; в частности, я изучаю сетевую архитектуру и HTTP-запросы. Пример курса ниже демонстрирует, как написать простой веб-браузер.

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)

Однако мне интересно, есть ли разница между этой функцией и методом CONNECT, описанным здесь . Этот синтаксис: CONNECT serverurl: порт

В частности, когда уместно использовать один или другой?

1 Ответ

0 голосов
/ 15 июня 2019

Функция .connect() подключает сокет TCP к удаленному серверу, что позволяет отправлять и получать данные с сервера.В вашем случае вы используете сокет TCP для отправки HTTP-команд и получения соответствующих HTTP-ответов.

Метод HTTP CONNECT - это нечто совершенно другое.Это тип HTTP-команды, которая включает GET (ту, которую вы используете), HEAD, POST, PUT и т. Д., Которые можно отправлять через подключенный сокет.CONNECT относится к туннелированию HTTP (то есть, когда веб-сервер передает ваши запросы на другой сервер).

Когда вы отправляете команду CONNECT, вы в основном указываете серверу пересылать будущие команды HTTP на другой HTTP-сервер.Так что это похоже на то, чтобы быть «подключенным» к этому другому серверу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...