powered by simpleCommunicator - 2.0.27     © 2024 Programmizd 02
Map
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Первый и самый примитивный сервер и клиент на питоне
4 сообщений из 4, страница 1 из 1
Первый и самый примитивный сервер и клиент на питоне
    #40103947
black-manatee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер.

Помогите, пожалуйста со следующей проблемой.
Мне необходимо написать на питоне сервер и клиент для обработки POST запросов.
Я перерыл весь интернет и не могу даже написать самый примитивный сервер.

Вот клиент из трех строчек.

Код: php
1.
2.
3.
import requests
resp = requests.post("https://127.0.0.1:8080", {})
print(resp.text)


Если я в качестве адреса подставляю "https://httpbin.org/post", то все работает без проблем.


А вот сервер:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
from http.server import HTTPServer, BaseHTTPRequestHandler

class SimpleHTTPRequestHandler(BaseHTTPRequestHandler):
    def do_POST(self):
        self.wfile.write(b"Hello !!!")
        return

httpd = HTTPServer(('127.0.0.1', 8080), SimpleHTTPRequestHandler)
httpd.serve_forever()



Если я в клиенте подставляю "https://127.0.0.1:8080", то на сервере получаю ошибку

127.0.0.1 - - [12/Oct/2021 22:39:46] code 400, message Bad request version ("\x15AU?e\x14\x12oGE\x9b\x1ai\x8b¶Ga?a?C\x05A\x99\x9cBUi|A\x9cC\x00V\x13\x02\x13\x03\x13\x01A,A0A+A/I©I?\x00\x9f\x00\x9eI?A?A\xadA®A¬A$A(A#A'A")
127.0.0.1 - - [12/Oct/2021 22:39:46] "

а на клиенте

requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=8080): Max retries exceeded with url: / (Caused by SSLError(SSLError(1, '[SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1129)')))

Если же вместо https использую http, то в сервере получаю

Traceback (most recent call last):
File "D:\work_scool\05\homework\dz\03_oop\homework\test1.py", line 11, in <module>
httpd.serve_forever()
File "C:\Users\animal\AppData\Local\Programs\Python\Python39\lib\socketserver.py", line 232, in serve_forever
ready = selector.select(poll_interval)
File "C:\Users\animal\AppData\Local\Programs\Python\Python39\lib\selectors.py", line 324, in select
r, w, _ = self._select(self._readers, self._writers, [], timeout)
File "C:\Users\animal\AppData\Local\Programs\Python\Python39\lib\selectors.py", line 315, in _select
r, w, x = select.select(r, w, w, timeout)
KeyboardInterrupt

А на клиенте

raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', BadStatusLine('Hello !!!'))



Помогите, пожалуйста, мне бы только начать. Первый сервер и первый клиент.
...
Рейтинг: 0 / 0
Первый и самый примитивный сервер и клиент на питоне
    #40104042
iot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
iot
Гость
black-manatee,

Добрый день.
попробуйте так https://gist.github.com/dergachev/7028596
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
from http.server import HTTPServer, SimpleHTTPRequestHandler
import ssl, os
os.system("openssl req -nodes -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -subj '/CN=mylocalhost'")
port = 443
httpd = HTTPServer(('0.0.0.0', port), SimpleHTTPRequestHandler)
httpd.socket = ssl.wrap_socket(httpd.socket, keyfile='key.pem', certfile="cert.pem", server_side=True)
print(f"Server running on https://0.0.0.0:{port}")
httpd.serve_forever()
...
Рейтинг: 0 / 0
Первый и самый примитивный сервер и клиент на питоне
    #40104215
maxkar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
black-manatee
Помогите, пожалуйста, мне бы только начать. Первый сервер и первый клиент.


HTTP протокол все же нужно соблюдать. Статусную строку и заголовки ведь тоже надо выводить.

Код: python
1.
2.
3.
4.
5.
6.
7.
class SimpleHTTPRequestHandler(BaseHTTPRequestHandler):
    def do_POST(self):
        self.send_response(200)
        self.send_header('Content-Type', 'application/binary')
        self.end_headers()
        self.wfile.write(b"Hello !!!")
        return



На опечтаки не проверял. Заголовков может быть и больше, и меньше, чем в примере. Они все идут после статуса и до end_headers.
...
Рейтинг: 0 / 0
Первый и самый примитивный сервер и клиент на питоне
    #40118861
uProger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
black-manatee,

Гдето и когдато зацепил подобный код

прикладываю к постую может пригодится
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Первый и самый примитивный сервер и клиент на питоне
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]