Форум программистов, компьютерный форум, киберфорум
Delphi: Сети
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 30.07.2012
Сообщений: 19
1

ClientSocket/ServerSocket: как отправить клиенту список тех, кто онлайн?

09.11.2012, 20:57. Показов 1597. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
как только что присоединившемуся клиенту (ClientSocket) отправить список, тех кто сейчас онлайн на сервере(serverSocket)?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.11.2012, 20:57
Ответы с готовыми решениями:

ClientSocket ServerSocket Delphi 7 Как отправить команду?
Хеллоу народ! скажите пожалуйста можно отправить команду к серверсокет например запустить проводник...

Как отправить текст клиенту которые не присоединен к серверу зная его ip и порт через ServerSocket?
Как отправить текст клиенту которые не присоединен к серверу зная его ip и порт через ServerSocket?

ServerSocket и ClientSocket как определить IP хоста?
Есть 2 программы: Серверая, на которой используется ServerSocket, для получения строки с текстом ...

Как программно создать ServerSocket\ClientSocket ?
Соответственно неизвестно заранее нужное количество. Как программно создать...

9
7 / 7 / 4
Регистрация: 24.08.2011
Сообщений: 313
10.11.2012, 09:46 2
Тебе нужно вывести онлайн в программе? Я помню делал через сайт выводил онлайн в программе могу помочь если тебе почти тоже самое и нужно =)
0
1 / 1 / 1
Регистрация: 30.10.2012
Сообщений: 39
10.11.2012, 12:50 3
очень легко) сначала нужно сделать проверку ника пользователя, делается это так:
отправка клиенту специального запроса с дополнением вначале (типа '#NickName')
потом на сервере при приеме сообщения сделать проверку если при копировании 9 символов в принятой строке будет выше описанный текст, то происходит отправка ника на сервер, потом с сервера идет рассылка, так же со дополнением в тексте, на клиент всем активным соединениям

Добавлено через 6 минут
вот пример сервера

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 s := Socket.ReceiveText;
  {Если кто-то прислал нам свое имя}
  if Copy(s,1,2) = '#N' then begin
   Delete(s,1,2);
   {Добавляем его в юзер лист}
   ListBox1.Items.Add(s);
   {Записываем в s команду для посылки нового списка юзеров}
   s := '#U';
   for i := 0 to ListBox1.Items.Count-1 do
    s := s+ListBox1.Items[i]+';';
   {...и рассылаем этот список всем клиентам}
   for i := 0 to ServerSocket1.Socket.ActiveConnections-1 do
    ServerSocket1.Socket.Connections[i].SendText(s);
  end;
так же при дисконекте делаем проверку на активных пользователей

Delphi
1
2
3
ListBox1.Items.Clear;
  for i := 0 to ServerSocket1.Socket.ActiveConnections-1 do
   ServerSocket1.Socket.Connections[i].SendText('#N');

вот клиента

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
s := Socket.ReceiveText; (принятая строка(
(проверка на то что отправлен список пользователей)
  if Copy(s,1,2) = '#U' then
  begin
   Delete(s,1,2);(удаляем спец символы)
   Form2.ListBox1.Items.Clear; (очищаем список листбокс)
   while Pos(';',s) > 0 do
   begin
    ListBox1.Items.Add(Copy(s,1,Pos(';',s)-1)); (добавляем в листбокс)
    Delete(s,1,Pos(';',s));
   end;
  end;
1
0 / 0 / 0
Регистрация: 30.07.2012
Сообщений: 19
22.11.2012, 21:26  [ТС] 4
Цитата Сообщение от KaZaK555 Посмотреть сообщение
Я помню делал через сайт выводил онлайн в программе
интересный наверно способ, расскажите как?
0
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
22.11.2012, 21:44 5
Цитата Сообщение от SwiftAngel Посмотреть сообщение
при копировании 9 символов в принятой строке
А если принято не 9 символов, а , скажем, пять, то оставшиеся четыре твой код высосет из пальца.
А если принято 99 символов, то твой код скопирут девять, а оставшиеся 90 выкинет в мусор.
0
1 / 1 / 1
Регистрация: 30.10.2012
Сообщений: 39
23.11.2012, 19:48 6
во-первых прочитайте еще раз, там написано ЕСЛИ при копировании символов, то есть если оно скопирует и оно будет соответствовать запросу на ник то тогда будет дальше работать нет лесом
0
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
23.11.2012, 23:02 7
Цитата Сообщение от SwiftAngel Посмотреть сообщение
там написано ЕСЛИ при копировании символов, то есть если оно скопирует и оно будет соответствовать запросу на ник
Пусть при первом событии OnClientRead вызов ReceiveText вернул строку '#' - именно такую, ни больше ни меньше.
Условие Copy(s,1,2) = '#N' при этом оказалось ложным и ты послал юзера лесом.

Следом возникло очередное событие OnClientRead и ReceiveText вернул строку 'NВасяПупкин' - оставшуюся "порцию" отправленных юзером данных.
Условие Copy(s,1,2) = '#N' при этом опять оказалось ложным и ты опять послал юзера лесом.

Почему юзер виновати в бестолковости "кодера", не желающего ни читать ни вникать в то о чем ему намекают ?)

p.s. Этот говнокод, писаный невесть кем невесть когда, в миллионах разных вариаций гуляет по Интернету, и школота переписывает его, долдонит как мантру и с видом умудренных гуру советует другим.
0
1 / 1 / 1
Регистрация: 30.10.2012
Сообщений: 39
23.11.2012, 23:12 8
долбит? сейчас выложу то что реализовал и посмотрите
во-вторых в интернете все правильно расписано, мб я и не сильно разбираюсь, но у меня стоят проверки на обычное сообщение, на приват сообщение и на отправку ника и все работало хорошо

Добавлено через 4 минуты
Исходники чата
смотрите исходники потому что программу стал переделывать под регистрацию с авторизацией, но так руки и не дошли) умный человек там все поймет))
0
1 / 1 / 1
Регистрация: 30.10.2012
Сообщений: 39
27.11.2012, 18:30 9
походу разобрались как я все делал, а претензий то сколько было...
0
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
27.11.2012, 21:34 10
Цитата Сообщение от SwiftAngel Посмотреть сообщение
в интернете все правильно расписано
"Расписано", да только не там откуда ты почерпнул этот насквозь кривой "шедевр".
0
27.11.2012, 21:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.11.2012, 21:34
Помогаю со студенческими работами здесь

ServerSocket и ClientSocket
Как передать сообщение не всем а именно нужному клиенту? Например подключено к серверу 4 клиента и...

ServerSocket and ClientSocket
Подскажите через что проще сделать список подключенных людей к ClientSocket, так чтобы при...

ServerSocket и ClientSocket
Дайте пжл инфу или книгу электронную по ServerSocket и ClientSocket... Буду очень благодарен..

ClientSocket и ServerSocket
В общем, задание таково: Клиентская программа оправляет на сервер последовательность из k целых...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru