Гость
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Написать сокет / 3 сообщений из 3, страница 1 из 1
14.03.2020, 20:37
    #39937453
Areostar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написать сокет
Нужно создать сокет

Написал такой код:

На локалке работает! Загрузил на сервер, пытаюсь запустить gjkexf.

авторFile "socket.py", line 46, in run
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
AttributeError: module 'socket' has no attribute 'AF_INET'

на локалке версия Python 3.8.1

на серваке 3.6, может в этом проблема или ещё в чЁм??

Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
import socket


URLS = {
    '/': 'hello index',
    '/blog': 'hello blog'
}


def generate_content(code, url):
    if code == 404:
        return '<ht>404</h1><p>Not found</p>'
    if code == 405:
        return '<ht>405</h1><p>Method not allowed</p>'
    return '<ht>{}</h1>'.format(URLS)


def  generate_headers(method, url):
    if not method == 'GET':
        return ('HTTP/1.1 405 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 parse_request(request):
    parsed = request.split(' ')

    method = parsed[0]
    url = parsed[1]

    return (method, url)


def generate_response(request):
    method, url = parse_request(request)
    headers, code = generate_headers(method, url)
    body = generate_content(code, url)

    return (headers + body).encode()


def run():
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    server_socket.bind(('localhost', 5000))
    server_socket.listen()

    while True:
        client_socket, addr = server_socket.accept()
        request = client_socket.recv(1024)
        print(request)
        print()
        print(addr)

        response = generate_response(request.decode('utf-8'))

        client_socket.sendall(response)
        client_socket.close()


if __name__ == '__main__':
    run()
...
Рейтинг: 0 / 0
15.03.2020, 14:13
    #39937571
Areostar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написать сокет
переименовал фаил - заработало!

но на локлке я запрашивал как то так http://localhost:5000/

Загрузил на сервер с доменом скажем my-domen.com pfghfibdf. my.domen.com:5000/ - зависает пока таимаут не получает! может причина что у сайта https или ещё в чём?
...
Рейтинг: 0 / 0
15.03.2020, 14:44
    #39937589
Areostar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написать сокет
Как я понял надо перенацелить вот здесь
Код: python
1.
server_socket.bind(('localhost', 5000))



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


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