Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import socket
- import logging
- logger = logging.getLogger(__name__)
- class Server:
- def __init__(self,addr = ('localhost', 8000), router: Router):
- self.addr = addr
- self.router = router
- def create_socket(self):
- """ Функция создает, настраивает сокет """
- sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
- sock.bind(self.addr)
- sock.listen(5)
- return sock
- def start_loop(self):
- with create_socket() as sock:
- logging.info(f"Listen on: {ADDR}")
- while True:
- conn, addr = sock.accept()
- logging.info(f"New connection: {addr}")
- data = bytearray() # Все данные от клиента
- while True:
- r_data = conn.recv(1024)
- data.extend(r_data)
- if len(r_data) < 1024:
- break
- # Получаем объект запроса
- req = Request.from_http_bytes(addr, data)
- conn.send(router.process_request(req))
- response =router.process_request(req)
- # Закрываем соединение
- logging.info(f"Close connection: {addr}")
- conn.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement