Важно также знать, что эти клиент и сервер участвуют в диалоге частного свойства и потому используют порт с номером 50007 — вне диапазона, зарезервированного для стандартных протоколов (0-1023). Однако ничто не мешает клиенту открыть сокет на одном из этих выделенных портов. Например, следующий программный код соединяется с программами, ожидающими запросов на соединение на стандартных портах электронной почты, FTP и веб-сервера HTTP на трех разных компьютерах:
C:\…\PP4E\Internet\Sockets> python
> >> from socket import *
> >> sock = socket(AF_INET, SOCK_STREAM)
> >> sock.connect((‘pop.secureserver.net’, 110)) # подключиться к POP—серверу
> >> print(sock.recv(70))
b’+OK <14654.1272040794@p3pop01-09.prod.phx3.gdg>\r\n’
> >> sock.close()
> >> sock = socket(AF_INET, SOCK_STREAM)
> >> sock.connect((‘learning-python.com’, 21)) # подключиться к FTP—серверу
> >> print(sock.recv(70))
b’220—— Welcome to Pure-FTPd [privsep] [TLS] \r\n220-You’
> >> sock.close()
> >> sock = socket(AF_INET, SOCK_STREAM)
> >> sock.connect((‘www.python.net‘, 80)) # подключиться к HTTP-серверу
> >> sock.send(b‘GET /\r\n‘) # получить корневую страницу
7
> >> sock.recv(70)
b'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"\r\n "http://’
> >> sock.recv(70)
b’www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r\n<html xmlns="http://www.’
Если уметь интерпретировать вывод, возвращаемый серверами этих портов, то можно непосредственно использовать такие сокеты для получения почты, передачи файлов, загрузки веб-страниц и запуска сценариев на сервере. К счастью, нет надобности беспокоиться о деталях происходящего — модули Python poplib, ftplib, http.client и urllib. request предоставляют интерфейсы более высокого уровня для связи с серверами через эти порты. Существуют также другие модули протоколов Python, которые осуществляют то же самое для других стандартных портов (например, NNTP, Telnet и так далее). С некоторыми из этих клиентских модулей протоколов мы познакомимся в следующей главе.
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, II том, 2011