Главная страница
    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.47 MB
Время: 0.006 c
15-1222712852
NailMan
2008-09-29 22:27
2008.11.30
Просьба имеющим Емул ака Осла


15-1222777842
oldman
2008-09-30 16:30
2008.11.30
А ведь сегодня День Интернета в России...


15-1222536063
Кое кто
2008-09-27 21:21
2008.11.30
А можно посмотреть статистику посещаемости


8-1188299704
Арт
2007-08-28 15:15
2008.11.30
векторное изображение и работа с ним...


2-1224481682
саша
2008-10-20 09:48
2008.11.30
Распознование картинки на web странице





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский