Текущий архив: 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.47 MB
Время: 0.006 c