Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import socket # скелет
- URLS = {
- '/': 'hello index',
- '/blog': 'hello blog'
- }
- def parse_request(request):
- parsed = request.split('') # строка запроса по пробелам
- method = parsed[0]
- url = parsed[1]
- return(method, url)
- def generate_headers(method, url):
- if not method == 'GET':
- return ('HTTP/1.1 4405 METHOD NOT ALLOWED\n\n', 405)
- if not url in URLS:
- return ('HTTP/1.1 404 Not found\n\n', 404) # смотрим ассоциативный массив
- return ('HTTP/1.1 200 OK\n\n', 200)
- def generate_content(code, url):
- if code == 404:
- return '<h1>404</h1><p>Not found</p>'
- if code == 405:
- return '<h1>404</h1><p>Not allowed</p>'
- return '<h1>{}</h1>'.format(URLS[url])
- def generate_response(request):
- method, url = parse_request(request)
- headers, code = generate_headers(method, url) # генерируем заголовки урла
- body = generate_content(method, url)
- return (headers + body).encode() # парсим
- def run(): # используем стек TCP/IP
- server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # семья INET - IP, второе - TCP
- server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # устанавливаем уровень сокета
- server_socket.bind(('127.0.0.1', 5000))
- server_socket.listen()
- while True: # на бесконечные отношения
- client_socket, addr = server_socket.accept() # проверка получения
- request = client_socket.recv(1024) # количество байт на пакет от клиента
- print(request.decode('utf-8'))
- print()
- print(addr) # на адрес от клиента
- response = generate_response(request.decode('utf-8'))
- client_socket.sendall('Hi'.encode())
- client_socket.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement