Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 27, 2010 14:58:52

del3d
От:
Зарегистрирован: 2010-03-12
Сообщения: 87
Репутация: +  0  -
Профиль   Отправить e-mail  

чат клиент-сервер

Добрые сутки товарищи…

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

Вопрос 1: Стоит ли использовать отдельный поток для каждого подключения или можно обойтись вообще без потоков или как?
Вопрос 2: Подключение к серверу должно быть постоянным или только в момент отправки сообщения?



Офлайн

#2 Апрель 27, 2010 15:07:10

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

чат клиент-сервер

Отличная статья как введение в сокеты на 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-чата пойдет.



Отредактировано (Апрель 27, 2010 15:08:19)

Офлайн

#3 Апрель 27, 2010 17:24:49

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

чат клиент-сервер

необязательно на tcp/ip делать постоянное соединение, в вебе например в основном используется непостоянное. + о разрывах меньше думать.
я бы чат наверно на xmlRPC сделал т.к. это бысто и просто…

Офлайн

#4 Апрель 28, 2010 10:24:15

del3d
От:
Зарегистрирован: 2010-03-12
Сообщения: 87
Репутация: +  0  -
Профиль   Отправить e-mail  

чат клиент-сервер

Спасибо, прочитал.. кое что понял..
Создаю для каждого подключения поток, подключение постоянное..



Офлайн

#5 Апрель 28, 2010 10:42:24

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

чат клиент-сервер

del3d
Создаю для каждого подключения поток, подключение постоянное..
эээ… зачем поток…
Когда то решал подобную проблему. Остановился на реализации на select. Все очень просто. Помог вот этот пример сервера и клиента:
http://code.activestate.com/recipes/531824-chat-server-client-using-selectselect/
Минут 20 помедитировал над этим кодом, и наступило просветление….



Офлайн

#6 Апрель 28, 2010 12:11:52

pioner
От:
Зарегистрирован: 2009-10-21
Сообщения: 146
Репутация: +  0  -
Профиль   Отправить e-mail  

чат клиент-сервер

1. “на потоках” (синхронный сервер) и без них (асинхронный) - это две разные реализации. От задачи зависит и быстродействие и метод реализации.
2. Если разрывать соединение, то надо писать промежуточные данные в файл (в базу), потом по id авторизоваться и получать что на ваш id пришло. Для быстрого чата (напр. игрового) неподойдет.



Офлайн

#7 Апрель 28, 2010 16:02:45

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

чат клиент-сервер

pioner, не нужно никуда писать. Вы, кажется, забыли - у каждого современного компьютера есть несколько гигабайтов оперативной памяти.



Офлайн

#8 Апрель 28, 2010 18:02:59

pioner
От:
Зарегистрирован: 2009-10-21
Сообщения: 146
Репутация: +  0  -
Профиль   Отправить e-mail  

чат клиент-сервер

Андрей Светлов, не нужно еще забывать, что сервера падают или процесс вылетит.



Офлайн

#9 Апрель 28, 2010 18:50:22

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

чат клиент-сервер

pioner
Андрей Светлов, не нужно еще забывать, что сервера падают или процесс вылетит.
лихие 90-ые прошли.
я на работе год назад приложение разместил, ещё ни разу не падало

Отредактировано (Апрель 28, 2010 18:50:39)

Офлайн

#10 Апрель 28, 2010 19:27:48

pioner
От:
Зарегистрирован: 2009-10-21
Сообщения: 146
Репутация: +  0  -
Профиль   Отправить e-mail  

чат клиент-сервер

На самом деле, топикстартер ничего не спросил. Его вопрос звучит так - каким из двух возвожных методов построить чат. Про нагрузку и пр. ничего. Тут есть реальный сисадмин? Этот вопрос к нему.

90-е прошли. 2 года назад на форуме сисадминов перевес был на стороне постоянного соединения.
Еще - а) если разместиться на виртуальном хосте, а не на работе, где администратор может просто перегрузить сервер. 2) на таком сервере вам отводится какой-то процент всех ресурсов (к вопросу о памяти), при превышении которого вас просят переходить на другой тариф (встречал такое).



Отредактировано (Апрель 29, 2010 01:21:26)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version