Найти - Пользователи
Полная версия: чат клиент-сервер
Начало » Network » чат клиент-сервер
1 2
del3d
Добрые сутки товарищи…

Пытаюсь понять как работают клиент-серверные приложения на примере чата.

Вопрос 1: Стоит ли использовать отдельный поток для каждого подключения или можно обойтись вообще без потоков или как?
Вопрос 2: Подключение к серверу должно быть постоянным или только в момент отправки сообщения?
regall
Отличная статья как введение в сокеты на Python - от основ до создания многопоточного эхо-сервера, думаю именно то, что вам сейчас нужно:
http://www.devshed.com/c/a/Python/Sockets-in-Python-Into-the-World-of-Python-Network-Programming/

del3d
Вопрос 2: Подключение к серверу должно быть постоянным или только в момент отправки сообщения?
В зависимости от используемого стека протоколов, например TCP/IP - постоянное соединение, UPD/IP - отправка датаграмм без подключения, для LAN-чата пойдет.
o7412369815963
необязательно на tcp/ip делать постоянное соединение, в вебе например в основном используется непостоянное. + о разрывах меньше думать.
я бы чат наверно на xmlRPC сделал т.к. это бысто и просто…
del3d
Спасибо, прочитал.. кое что понял..
Создаю для каждого подключения поток, подключение постоянное..
igor.kaist
del3d
Создаю для каждого подключения поток, подключение постоянное..
эээ… зачем поток…
Когда то решал подобную проблему. Остановился на реализации на select. Все очень просто. Помог вот этот пример сервера и клиента:
http://code.activestate.com/recipes/531824-chat-server-client-using-selectselect/
Минут 20 помедитировал над этим кодом, и наступило просветление….
pioner
1. “на потоках” (синхронный сервер) и без них (асинхронный) - это две разные реализации. От задачи зависит и быстродействие и метод реализации.
2. Если разрывать соединение, то надо писать промежуточные данные в файл (в базу), потом по id авторизоваться и получать что на ваш id пришло. Для быстрого чата (напр. игрового) неподойдет.
Андрей Светлов
pioner, не нужно никуда писать. Вы, кажется, забыли - у каждого современного компьютера есть несколько гигабайтов оперативной памяти.
pioner
Андрей Светлов, не нужно еще забывать, что сервера падают или процесс вылетит.
o7412369815963
pioner
Андрей Светлов, не нужно еще забывать, что сервера падают или процесс вылетит.
лихие 90-ые прошли.
я на работе год назад приложение разместил, ещё ни разу не падало
pioner
На самом деле, топикстартер ничего не спросил. Его вопрос звучит так - каким из двух возвожных методов построить чат. Про нагрузку и пр. ничего. Тут есть реальный сисадмин? Этот вопрос к нему.

90-е прошли. 2 года назад на форуме сисадминов перевес был на стороне постоянного соединения.
Еще - а) если разместиться на виртуальном хосте, а не на работе, где администратор может просто перегрузить сервер. 2) на таком сервере вам отводится какой-то процент всех ресурсов (к вопросу о памяти), при превышении которого вас просят переходить на другой тариф (встречал такое).
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB