Уведомления

Группа в Telegram: @pythonsu

#1 Июль 25, 2018 19:33:47

DamMercul
Зарегистрирован: 2017-11-26
Сообщения: 325
Репутация: +  13  -
Профиль   Отправить e-mail  

Проблемы с сервером (количеством подключений)

Есть SHELL аккаунт за бесплатно (freeshells.org), и я захотел сделать программу-чат как всегда мечтал. Чтобы она была более-менее востребованная я решил использовать RSA шифрование (обмен ключами как с SSL только без сертификата). Но есть проблема. Допустим, есть список с сокетами юзеров моего чата. Как мне принимать от них сообщения, чтобы другие не ждали? Ведь “socket.recv” ждет до тех пор, пока не получит ответ. А если вдруг пользователей будет 5, или 10? Может быть 200? Что тогда? От каждого поочереди приниимать сообщения в уме не складывается! А делать по 200 потоков для каждого сокета очень зашкварно. Если других путей нет, кроме 200 потоков, напишите. Я смирюсь. Если есть, то спасибо заранее есл объясните как.



____________________________________________________

 # Life loop
while alive:
    if (fun > boredom) and money:
        pass_day(fun, boredom, money)
        continue
    else: break

Офлайн

#2 Июль 26, 2018 00:30:29

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10022
Репутация: +  857  -
Профиль   Отправить e-mail  

Проблемы с сервером (количеством подключений)

У тебя должна быть неблокирующая очередь, куда поступают все сообщения. Совсем другая архитектура, чем тебе кажется.

DamMercul
Ведь “socket.recv” ждет до тех пор, пока не получит ответ.
Это зависит от сокета, блокирующий он или неблокирующий. Для опроса сокетов есть select.

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



Отредактировано py.user.next (Июль 26, 2018 00:31:14)

Офлайн

#3 Июль 26, 2018 11:48:26

DamMercul
Зарегистрирован: 2017-11-26
Сообщения: 325
Репутация: +  13  -
Профиль   Отправить e-mail  

Проблемы с сервером (количеством подключений)

Спасибо, но я все-таки попробую) *Кстати как-то очень много просмотров на вопросе*



____________________________________________________

 # Life loop
while alive:
    if (fun > boredom) and money:
        pass_day(fun, boredom, money)
        continue
    else: break

Офлайн

#4 Июль 26, 2018 13:56:09

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Проблемы с сервером (количеством подключений)

сокеты в питоне - обертка над С-сокетами, лучше их изучи
http://www.bogotobogo.com/python/python_network_programming_tcp_server_client_chat_server_chat_client_select.php

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version