Запуск слушателя сокета / основы сервера - PullRequest
0 голосов
/ 25 октября 2019

Мне было интересно, реализует ли следующее все, что нужно для того, чтобы http-сервер был готов принимать соединения с локальным хостом:

import socket

# 1. Create a TCP Socket
listen_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 

# 2. Bind to a port on localhost
listen_socket.bind(('', 8888))

# 3. Mark it a passive socket so it can "listen" to receive incoming connections
listen_socket.listen(1)

# Receive the connection
while True:
    # do_something()

Требуется ли это вся концептуальная структура или есть другие вещи, которые мне нужны? сделать, чтобы настроить сервер? Кроме того, я видел следующую команду, используемую после создания сокета:

listen_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

Какая польза от этого и установки этой опции?

1 Ответ

0 голосов
/ 25 октября 2019

Технически вы установили сокет, который может прослушивать входящие соединения, да. Однако вы еще не создали такой, который может отвечать на HTTP-запросы.

HTTP-запросы имеют определенную структуру, например, HTTP-запросы имеют следующий заголовок:

GET /index.html HTTP/1.1

Thisанализирует метод запроса (GET), запрашиваемый ресурс (index.html, хранящийся в корневом каталоге сервера) и версию протокола HTTP (HTTP / 1.1). Наряду с этим есть атрибуты заголовка, на которые вам нужно обратить внимание, чтобы правильно интерпретировать любые данные, включенные в запрос, и отформатировать ваш ответ.

Было бы полезно прочитать спецификацию HTTP, чтобы найтибольше о различных глаголах и командах, которые вы должны будете посмотреть. Но это определенно шаг в правильном направлении!

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