Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.01.2008, 16:36   #11
Redas
Пользователь
 
Регистрация: 25.01.2008
Сообщений: 13
По умолчанию

Кстати, а что за ServerSocket И ClientSocket?
ЧТо то я не могу их найти, у меня Делфи 7.

А все нашел, сорри, ступил малость.

Последний раз редактировалось Redas; 25.01.2008 в 16:44.
Redas вне форума Ответить с цитированием
Старый 25.01.2008, 16:44   #12
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Если дело происходит в локальной сети, то при начале работы клиент может просто анонсировать свое появление на broadcast адрес 255.255.255.255 через UDP - без установления соединения. В посылке он должен указать свой IP, и, например, номер порта, на котором он принимает входящие TCP и ждать ответа. Те, кто уже находятся в сети на основе этой информации смогут "вступить с ним переговоры" - как дальше Вы будете делать - связывать всех между собой двунаправленными соединениями, работать через сервер (если дело происходит в интернете, то иначе установить связь и не получится), в обоих этих случаях "исчезновение" хоста определится по прекращению TCP-коннекта, работать исключительно через броадкаст (тогда придется периодически опрашивать все известные на данный момент узлы) - Вам решать. Как хранить список текущих соединений или активных хостов - задача тривиальная, я полагаю. Экспериментируйте. (А вообще, разработку таких вещей надо начинать с протокола)
B_N вне форума Ответить с цитированием
Старый 25.01.2008, 20:10   #13
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
Счастье Описание работы списка пользователей

Redas, я как автор этих статей, на которые дали ссылки, просто обязан пояснить как работает система создания списка пользователей более подробно.

Сначала общая картина работы:
1) Сервер запускается и находится в ожидании подключений;
2) Происходит подключение и сервер "обнуляет" массив UserMas. В массив заносятся данные наличия пользователя по номеру его канала, отметки подключения UserMas[i].Status. Регистрируется пользователь как неизвестный UserMas[i].Rec=False.
3) Сервер запрашивает имена пользователей по числу каналов.
4) Сервер принимает имена и регистрирует в массиве UserMas[i].Rec=True.

Как работает список UserListView:
1) Подготовка к работе (очистка, обнуление);
2) Просматривается массив на наличие UserMas[i].Status отличных от нуля, т.е. тех, кого нужно добавить в список, и добавляются записи в лист;
3) Параллельно проверяется подленность пользователя UserMas[i].Rec , если хоть один из пользователей пока не идентифицирован, то ContList:=1 - это флаг, что лист пользователей отсылать еще рано.
4) Когда все пользователи были определены, все UserMas[i].Rec установлены в True, отсылается строка всем пользователям - она складывается из UserMas[i].Name с разделительным символом, который нельзя набрать с клавиатуры.

Внимательно прочитайте комментарии в коде, все станет понятно. Если будут еще вопросы, задавайте.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 28.01.2008, 20:14   #14
GAGARIN-NEW
Познаю мир
Форумчанин Подтвердите свой е-майл
 
Аватар для GAGARIN-NEW
 
Регистрация: 05.10.2007
Сообщений: 387
По умолчанию

Что могу добавить ...:
Тоже делал чят .. недоделал .... но до чего дошол :
Широковещятельные рассылки не использую т.к. убедили меня что это лишний мусор в сети ...
Значит так как только ктото с другово компа входит в чят то отпрравляется 1 Широковещятельный типа "Вася"входит в сеть
Твой чят проверяет нету ли васиного АйПи в списке и если нет то добавляет его в список Онлайн.
Если есть то соответственно не добавляет ...
И при том если вася выходит из чята то тоже посылает сообщение "вася"вышел из сети
При этом твой чят ищет васин АйПи в списке онлайн и удаляет оттудова ...


/// Кроме этого ещё естественно есть livetime)) каждые 5 мин твой чят отправляет каждому кто есть в списке онлайн запрос "Вася"тыещё онлайн? если в течении 5 сек не пришол ответ "Да" то удаляем его из списка .... и так с каждым кто в онлайн ... это для устранения "Багов" с списком кто онлайн ... Например если ктото принудительно завершит Приложени и оно не успеет отправить "вася"вышел из сети ,то вася останется в списке 'кто онлайн но фактически его там небудет ...

//// У меня всё работает , только ещё заморочки с статусами и прочими брюликами ... тут написал на быструю руку ... чтобы было хоть более менее понятно
---
GAGARIN-NEW вне форума Ответить с цитированием
Старый 28.01.2008, 20:57   #15
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
Счастье Разбор полетов

Цитата:
Сообщение от GAGARIN-NEW Посмотреть сообщение
/// Кроме этого ещё естественно есть livetime)) каждые 5 мин твой чят отправляет каждому кто есть в списке онлайн запрос "Вася"тыещё онлайн? если в течении 5 сек не пришол ответ "Да" то удаляем его из списка .... и так с каждым кто в онлайн ...
Собственно, для чего это делается? ...разве серверный сокет не использует OnClientDisconnect ? ...если произойдет обрыв связи с клиентом, причем с любым из подключенных, то следует задать обновление списка в OnClientDisconnect, так же и при подключении клиента OnClientConnect, зачем же делать лишние проверки!? ...нет ответа в течении времени не есть потеря связи, а реальную потерю связи вам сокет покажет.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 28.01.2008, 21:02   #16
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

...да, и еще, почему клиентское приложение должно узнавать о присутствии прочих клиентов в чате, когда это прямая обязанность сервера ? ...сервер и должен узнавать "всё о всех" и отсылать клиентам требуемое.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 28.01.2008, 21:39   #17
GAGARIN-NEW
Познаю мир
Форумчанин Подтвердите свой е-майл
 
Аватар для GAGARIN-NEW
 
Регистрация: 05.10.2007
Сообщений: 387
По умолчанию

ЗЫ:
1) Я забыл напомнить что мой чят без сервера) в чём я щитаю есть его основная прелесть)))
2) Использую только IdUDPClient/сервер для "экономии" веса приложения)
---
GAGARIN-NEW вне форума Ответить с цитированием
Старый 28.01.2008, 22:24   #18
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Цитата:
Сообщение от GAGARIN-NEW Посмотреть сообщение
ЗЫ:
1) Я забыл напомнить что мой чят без сервера) в чём я щитаю есть его основная прелесть)))
2) Использую только IdUDPClient/сервер для "экономии" веса приложения)
И прелесть и отрицательное тоже есть ) работать то будет только внутри одной сети =)
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 29.01.2008, 18:53   #19
GAGARIN-NEW
Познаю мир
Форумчанин Подтвердите свой е-майл
 
Аватар для GAGARIN-NEW
 
Регистрация: 05.10.2007
Сообщений: 387
Хорошо

Цитата:
Сообщение от Квэнди Посмотреть сообщение
И прелесть и отрицательное тоже есть ) работать то будет только внутри одной сети =)
А мне другово и ненадо .. чят ведь локальный ....
---
GAGARIN-NEW вне форума Ответить с цитированием
Старый 03.03.2008, 14:17   #20
GIO
Пользователь
 
Регистрация: 20.11.2007
Сообщений: 16
Радость

Цитата:
Сообщение от Beermonza Посмотреть сообщение
с разделительным символом, который нельзя набрать с клавиатуры.

Внимательно прочитайте комментарии в коде, все станет понятно. Если будут еще вопросы, задавайте.
неужели
©ќЃ?
GIO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
фильтрация отображения из ADO... Roof БД в Delphi 5 19.08.2008 14:38
Помогите сделать окно авторизации пользователей HAMMAN Помощь студентам 2 09.05.2008 00:02
проблемы отображения Karl_Karlovi4 Общие вопросы Delphi 12 31.12.2007 09:21
«Окно+символ». Создать класс, представляющий окно в текстовом режиме. RustreX Паскаль, Turbo Pascal, PascalABC.NET 1 11.11.2007 19:28
Работа пользователей в сети Mike_B Софт 1 17.08.2007 16:34