Форум сайта python.su
13
Есть 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
Офлайн
857
У тебя должна быть неблокирующая очередь, куда поступают все сообщения. Совсем другая архитектура, чем тебе кажется.
DamMerculЭто зависит от сокета, блокирующий он или неблокирующий. Для опроса сокетов есть select.
Ведь “socket.recv” ждет до тех пор, пока не получит ответ.
Отредактировано py.user.next (Июль 26, 2018 00:31:14)
Офлайн
13
Спасибо, но я все-таки попробую) *Кстати как-то очень много просмотров на вопросе*
# Life loop while alive: if (fun > boredom) and money: pass_day(fun, boredom, money) continue else: break
Офлайн
сокеты в питоне - обертка над С-сокетами, лучше их изучи
http://www.bogotobogo.com/python/python_network_programming_tcp_server_client_chat_server_chat_client_select.php
Офлайн