Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.11.30;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.012 c
2-1224654637
DJones
2008-10-22 09:50
2008.11.30
Вопрос об OnClick компонента CheckBox.


6-1195160742
homm
2007-11-16 00:05
2008.11.30
TWebBrowser: Вызов процедуры на дельфи


15-1222454964
Городской Шаман
2008-09-26 22:49
2008.11.30
Насколько разработчики игр серьезные люди?


2-1224486893
Lamer6666
2008-10-20 11:14
2008.11.30
TRegExpr как выбрать все символы строки слева от условия?


15-1222535144
Анонимм
2008-09-27 21:05
2008.11.30
Шахматная задачка из ветки