crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Пример клиент-серверной системы передачи сообщений
DeathKnight
  опции профиля:
сообщение 28.3.2010, 15:12
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 5
Регистрация: 28.3.2010
Пользователь №: 1573

Спасибо сказали: 0 раз(а)




Репутация:   0  


может быть, есть у кого-нибудь пример "клиент-серверной системы передачи сообщений".
все, что нашел в нете, слишком сложно. тот же qutim.
извините за беспокойство. за ранее спасибо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 28.3.2010, 15:18
Сообщение #2


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


DeathKnight,
а стандартные примеры поставляемые с библиотекой почему не смотрим?
и + поищи по форуму QTcpSocket QTcpServer QUdpSocket и проч.... для разнообразия.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 28.3.2010, 16:43
Сообщение #3


Мастер
******

Группа: Модератор
Сообщений: 3291
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Посмотри: Network Examples
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DeathKnight
  опции профиля:
сообщение 28.3.2010, 23:43
Сообщение #4


Новичок


Группа: Новичок
Сообщений: 5
Регистрация: 28.3.2010
Пользователь №: 1573

Спасибо сказали: 0 раз(а)




Репутация:   0  


kwisp, смотрел, просто этого мне не хватает для представления, как разработать программу.
буду ковырять. спс.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 29.3.2010, 8:00
Сообщение #5


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


DeathKnight,
раз не хватает стандартных примеров -- задавай конкретные вопросы.
этот вопрос кроме как ссылки на примеры уж прости ничего не заслуживает.
Цитата(DeathKnight @ 28.3.2010, 16:12) *
может быть, есть у кого-нибудь пример "клиент-серверной системы передачи сообщений".
все, что нашел в нете, слишком сложно. тот же qutim.
извините за беспокойство. за ранее спасибо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DeathKnight
  опции профиля:
сообщение 29.3.2010, 10:27
Сообщение #6


Новичок


Группа: Новичок
Сообщений: 5
Регистрация: 28.3.2010
Пользователь №: 1573

Спасибо сказали: 0 раз(а)




Репутация:   0  


хм.. тогда так. я придумал сделать на сервере:
-простой гуи для контроля состояния.
-сам tcpserver отправить в отдельный поток
-для каждого сокета пользователя также отдельный поток(клиент как наследник qthread с указателем на qtcpsocket)
-в объекте сервера qmap(id и ссылка на объект клиент-поток-сокет) для определения кому пересылать пришедшее сообщение
- и класс сообщения, в начале которого quint, где лежит величина всего объекта, а дальше параметры(либо id от кого и кому и сообщение, либо служебные сообщения(авторизация и т.п.))

оправдан такой подход или это будет довольно сложно для реализации? пишу курсовой.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 29.3.2010, 10:54
Сообщение #7


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


DeathKnight,
тут вопрос, на сколько много соединений ты хочешь обслуживать и как много данных передавать. если объемы данных не большие и соединений не много то..... если кол-во соединений большое и объемы данных велики то всё намного сложнее по-моему.
если по-простому я бы попробовал сделать так.
никаких потоков.
-- сервер слушает порт(для гибкости порт можно передавать через параметр командной строки или гуй или файл конфигурации). как только кто-то стучится соединиться ему выделяется новый сокет с новым портом и далее общение с клиентом уже через новый сокет.
-- клиент стучится на сервер:порт(заданый через гуй, командную строку, файл конфигурации) ему выделяют порт и он уже по этому порту общается сервером.
-- класс сообщения с заголовком quint, вроде нормально у меня сделано так же пока сбоев не было. прочти соседние темы на счет затыков с размерами сообщений, перемешении байтов, корректном вычитывании из сокета.

пробуй. пиши код сюда.
П.С. зачем тебе QMap для хранения идентификаторов клиентов если не важен порядок используй QHash или вектор., можно и обычным массивом обойтись если извесно максимальное колличество клиентов.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 5.7.2020, 1:00