crossplatform.ru

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


  Ответ в Пример клиент-серверной системы передачи сообщений
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


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

пробуй. пиши код сюда.
П.С. зачем тебе QMap для хранения идентификаторов клиентов если не важен порядок используй QHash или вектор., можно и обычным массивом обойтись если извесно максимальное колличество клиентов.
DeathKnight Дата 29.3.2010, 10:27
  хм.. тогда так. я придумал сделать на сервере:
-простой гуи для контроля состояния.
-сам tcpserver отправить в отдельный поток
-для каждого сокета пользователя также отдельный поток(клиент как наследник qthread с указателем на qtcpsocket)
-в объекте сервера qmap(id и ссылка на объект клиент-поток-сокет) для определения кому пересылать пришедшее сообщение
- и класс сообщения, в начале которого quint, где лежит величина всего объекта, а дальше параметры(либо id от кого и кому и сообщение, либо служебные сообщения(авторизация и т.п.))

оправдан такой подход или это будет довольно сложно для реализации? пишу курсовой.
kwisp Дата 29.3.2010, 8:00
  DeathKnight,
раз не хватает стандартных примеров -- задавай конкретные вопросы.
этот вопрос кроме как ссылки на примеры уж прости ничего не заслуживает.
Цитата(DeathKnight @ 28.3.2010, 16:12) *
может быть, есть у кого-нибудь пример "клиент-серверной системы передачи сообщений".
все, что нашел в нете, слишком сложно. тот же qutim.
извините за беспокойство. за ранее спасибо.
DeathKnight Дата 28.3.2010, 23:43
  kwisp, смотрел, просто этого мне не хватает для представления, как разработать программу.
буду ковырять. спс.
ViGOur Дата 28.3.2010, 16:43
  Посмотри: Network Examples
kwisp Дата 28.3.2010, 15:18
  DeathKnight,
а стандартные примеры поставляемые с библиотекой почему не смотрим?
и + поищи по форуму QTcpSocket QTcpServer QUdpSocket и проч.... для разнообразия.
DeathKnight Дата 28.3.2010, 15:12
  может быть, есть у кого-нибудь пример "клиент-серверной системы передачи сообщений".
все, что нашел в нете, слишком сложно. тот же qutim.
извините за беспокойство. за ранее спасибо.
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 11.7.2025, 1:49