Вверх ↑
Этот топик читают: Гость
Ответов: 4
Рейтинг: 0
#1: 2014-06-02 01:22:16 ЛС | профиль | цитата
Здравствуйте. Извиняюсь сразу, за возможно, повторную тему.(искал ответ, но не нашёл)В данный момент занят созданием клиента на основе tcp протокола, в котором реализован текстовый, звуковой чаты, так же доступна передача файлов. Столкнулся с 2 проблемами. 1: для каждого типа данных, пришлось делать отдельный сервер с портом, то есть для текстового чата один сервер с портом, для передачи файлов другой. Читал, что можно передавать разные типы данных с помощью TCP_ServerEx, но толком не понял как именно. 2: Долго парился, но так и не смог сделать показ онлайн клиентов, может кто подскажет, как ? Идея, реализовать что-то похожее на flylinkdc++, но делаю для конкретного трекера. Извиняюсь, что я такой бездарь и у самого пока не получилось,а напрягаю вас))
------------ Дoбавленo в 01.22:
Так же, не понятно как реализовать передачу данных по личке, то есть клиент-клиент, минуя сервер.
карма: 1

0
vip
#1.1контекстная реклама от партнеров
Гость
Ответов: 17029
Рейтинг: 0
#2: 2014-06-02 09:06:49 правка | ЛС | профиль | цитата


Редактировалось 5 раз(а), последний 2020-03-01 19:31:26
карма: 0

0
Ответов: 4341
Рейтинг: 677
#3: 2014-06-02 11:25:24 ЛС | профиль | цитата
Azerate, "минуя сервер" - зачем? Сервер является связующим звеном для клиентов, отвечает за авторизацию пользователей, помогает соединять пользователей, которые не имеют выделенного IP, ведет журнал сообщений и т.п.

"Разные типы" данных отличаются только способом обработки в принимающей схеме. Передаются по сети одинаково. Проблема только в том, что любые данные передаются порциями, которые мы получаем на событии onRead. Поэтому при передачи больших файлов принимающей стороне нужно знать об окончании передачи. Это можно реализовать путем посылки перед самим файлом условной команды, показывающей, что сейчас будет передаваться файл указанной длины. Тогда клиент будет считывать это количество данных в файл, а затем опять переключится в "текстовый режим".
Кроме того, временный запуск отдельного сервера на другом порту исключительно для передачи файлов тоже может быть подходящим вариантом. Условием окончания передачи может служить разрыв соединения.

Показ онлайн-клиентов - при подключении нового клиента сервер может посылать всем текущим подключениям условную команду "пользователь такой-то появился/исчез из сети". А клиенты у себя обновляют список активных пользователей.

карма: 25

0
Ответов: 4
Рейтинг: 0
#4: 2014-06-02 19:11:41 ЛС | профиль | цитата
Netspirit писал(а):
сервер может посылать всем текущим подключениям условную команду "пользователь такой-то появился/исчез из сети". А клиенты у себя обновляют список активных пользователей.
Так и сделал, думал может ещё варианты есть.
Netspirit писал(а):
реализовать путем посылки перед самим файлом условной команды, показывающей, что сейчас будет передаваться файл указанной длины
Именно так и собирался сделать, искал исходники на делфи и там нашёл такой способ.
На счёт клиент-клиент минуя сервер, чтоб сделать личный чат между 2 пользователями по их желанию.Просто, не понятно, для каждой личной комнаты с юзером, сделать одинаковые формы. Написал тебе юзер 1, открылась одна форма, написал 2, открылась вторая в которой происходит обмен данными только между ними, к примеру можно сделать так же посыл определённой команды на сервер для этого(я так думаю)Так вот, как сделать создание этих форм?Надеюсь правильно изъяснился. Кстати, спасибо за адекватный ответ.
карма: 1

0
Ответов: 4341
Рейтинг: 677
#5: 2014-06-02 19:16:21 ЛС | профиль | цитата
Azerate писал(а):
так же посыл определённой команды на сервер для этого
Именно. Но всеравно при участиии сервера.
То-есть, сервер ведет учет всех сообщений. Для отправки сообщений в публичный чат клиент посылает команду "сообщение всем". Сервер рассылает это сообщение всем подключениям.
Для отправки в приват посылаем команду "отправить сообщение указанному пользователю". Сервер перенаправляет его только нужному пользователю.
Почему сервер должен мониторить и накапливать все сообщения? Пользователь, войдя в систему, должен иметь возможность получить все "непрочитанные" сообщения (или за некоторый период).

Форма для приватных сообщений может быть и одна. Просто перед открытием запросить у сервера все сообщения между тобой и указанным пользователем и отобразить их в этой форме.
карма: 25

0
Ответов: 4
Рейтинг: 0
#6: 2014-06-02 20:46:46 ЛС | профиль | цитата
Netspirit писал(а):
Пользователь, войдя в систему, должен иметь возможность получить все "непрочитанные" сообщения (или за некоторый период).
Точно)Что-то я об этом не подумал)Спасибо за это)
Netspirit писал(а):
Форма для приватных сообщений может быть и одна. Просто перед открытием запросить у сервера все сообщения между тобой и указанным пользователем и отобразить их в этой форме.
Хорошо, но это не понятно: от каждого пользователя, личное сообщение будет отображаться в одной форме,как осуществить в разные? К примеру при приёме от 1 открывается вкладка с его именем и списком сообщений, от 2 другая, как именно это сделать?Сделать форму для шаблона, и при приходе данных от разных юзеров он её копировал в другую вкладку и именно в неё приходят данные. Блин, не знаю как выразиться ещё. Ну, к примеру тот же агент майл ру, диалог сообщений с каждым пользователем в разные вкладках(на сколько я помню этот агент)
карма: 1

0
Ответов: 4341
Рейтинг: 677
#7: 2014-06-03 11:07:12 ЛС | профиль | цитата
Копать в сторону ChildFormEx
карма: 25

0
Разработчик
Ответов: 25681
Рейтинг: 2087
#8: 2014-06-03 11:38:32 ЛС | профиль | цитата
Netspirit писал(а):
Копать в сторону ChildFormEx

А лучше в сторону ChildFormPoly, особенно, если много различных форм
карма: 20

0
Ответов: 1268
Рейтинг: 28
#9: 2014-06-03 18:09:28 ЛС | профиль | цитата
а по мне ещё лучше использовать чисто 1 приложение с параметрами при запуске и связью с основным в виде MailSlot
в итоге мы получим совершенно другую программу, которая не будет мешать самому центру ВИЗУАЛЬНЫМИ примочками...
таким образом щас работает куча программ...

то есть предлагаю запуск всего, что связанно НЕ с центром, через внешние дополнения ввиде exe файлов принимающих параметры запуска.
карма: 2

0
Ответов: 9906
Рейтинг: 351
#10: 2014-06-03 22:50:53 ЛС | профиль | цитата
[offtop]Созревает еще один кодер, которого визуальные примочки утомили

Внимание, Гусары -- МАЛЧАТЬ
Не показывайте ему нипочем, где лежит "правильный" GlobalVarEx [/offtop]
карма: 9

1
Голосовали:Tad
10
Сообщение
...
Прикрепленные файлы
(файлы не залиты)