Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.11.30;
Скачать: [xml.tar.bz2];

Вниз

Indy рассылка   Найти похожие ветки 

 
Lex ©   (2008-10-21 13:41) [0]

Здраствуйте подскажите пожалуйста, на компонентах indy пишу сервер. Проблемма в том что нужно всем подключенным клиентам посылать сообщение. Как это сделать??? сервер indyTCP. В сокетах это делается так:

for I := 0 to ServerSocket1.Socket.ActiveConnections - 1 do
 begin
   if ServerSocket1.Socket.Connections[i].Connected then
   begin
     ServerSocket1.Socket.Connections[i].SendBuf(buf,SizeOf(buf));
   end;
 end;

а как в indy сделать цикл по соединениям???? Возможно ли это? заранее спасибо.


 
Сергей М. ©   (2008-10-21 14:01) [1]


> if ServerSocket1.Socket.Connections[i].Connected


Условие в данном контексте его проверки всегда будет истинным, поэтому проверка эа попросту бестолковая.


> на компонентах indy пишу сервер


Версия Indy какая ?


 
Lex ©   (2008-10-21 14:06) [2]

да согласен, ну не в этом суть indy 10 я


 
Lex ©   (2008-10-21 14:06) [3]

Удалено модератором


 
Lex ©   (2008-10-21 14:07) [4]

Удалено модератором


 
Сергей М. ©   (2008-10-21 14:15) [5]

в 10-ке у сервера есть св-во-список Contexts, в котором у каждого элемента есть св-во Connection, у которого есть св-во-объект Binding, у которого есть методы приема и передачи для кооммуникации с ссотв.партнером по соединению


 
Lex ©   (2008-10-21 17:40) [6]

я пробовал им воспользоваться и раньше но не получилось, вот и сейчас не получается, после первого соединения клиента я пробовал так:

var
 c:TIdContext;
begin
   c:=IdTCPServer1.Contexts[0];// так нельзя! (ошибка)
   c.Connection.Socket.WriteLn("hello!!!");
 end;  

подскажите пожалуйста как с контекстом работать? и кстати ведь Contexts - является List -ом почему в нём нет поля Count? как узнать сколько активных подключений?


 
Сергей М. ©   (2008-10-21 18:36) [7]


> после первого соединения клиента я пробовал так


Попробуй после столохматого.


> так нельзя! (ошибка)


Справку читай, там ВСЕ написано.

ЧТО тебе там не понятно ?


 
DVM ©   (2008-10-21 21:55) [8]


> Lex ©

У серверов инди (в терминологии инди 10) есть список так называемых контекстов. Можно пройтись циклом по этому списку и выполнить необходимые для каждого контекста действия. НО! Список контекстов предварительно надо залочить. Для этого у списка есть метод соответствующий. После прохода разлочить.


 
DVM ©   (2008-10-21 21:56) [9]


> и кстати ведь Contexts - является List -ом почему в нём
> нет поля Count?

скорее TThreadList - потокобезопасная обертка над TList


 
DVM ©   (2008-10-21 21:59) [10]


> как узнать сколько активных

procedure TForm1.Button1Click(Sender: TObject);
begin
 with IdTCPServer1.Contexts.LockList do
   try
     Caption := IntToStr(Count);
   finally
     IdTCPServer1.Contexts.UnlockList;
   end;
end;


 
Сергей М. ©   (2008-10-21 22:04) [11]


> Contexts - является List -ом


Не трынди.
Не является и не являлся.

> после первого


Да хоть после столохматого


> как узнать сколько активных подключений


Штудировать класс TIdThreadList до полного просветления.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.11.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.005 c
3-1210739493
Аид
2008-05-14 08:31
2008.11.30
Работа с PostGreSQL, возможно ли?


15-1222674185
Slider007
2008-09-29 11:43
2008.11.30
С днем рождения ! 28 сентября 2008 воскресенье


15-1222603997
No_Dead(work)
2008-09-28 16:13
2008.11.30
Разыскиваются


2-1223920451
Ruzzz
2008-10-13 21:54
2008.11.30
как работать с TSplitter у которого Align := alNone ?


2-1224746120
JustI
2008-10-23 11:15
2008.11.30
пункт меню в DELPHI7 IDE





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский