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

Вниз

Работа с idTCPServer и idTCPClient.   Найти похожие ветки 

 
inface ©   (2004-06-21 12:27) [0]

Привет всем!

У меня проблема следующая.

Пишу клиент-серверное приложение используя idTCPServer и idTCPClient.

Как отправить данные с сервера выделенному клиенту при нажатии кнопки, я вроде бы разобрался и имеет следующий вид:

procedure TfrmMain.Button1Click(Sender: TObject);
var
 Msg: string;
 Client: TSimpleClient;
begin
 msg:=edit1.Text;
 if (Msg <> "") and
   (lbClients.ItemIndex <> -1) then
 begin
   Client := Clients.Items[lbClients.ItemIndex];
   TIdPeerThread(Client.Thread).Connection.WriteLn(Msg);
 end;
end;

Клиент же в свою очередь ловит эти данные следующим образом.

procedure TForm1.Timer1Timer(Sender: TObject);
var
 Com,
   Msg,s: string;
begin
 if not IdTcpClient1.Connected then
   exit;
 Msg := IdTCPClient1.ReadLn("", 5);
 if Msg <> "" then
   if Msg[1] <> "@" then
   begin
     label2.Caption:=Msg + " единиц, в " + timetostr(time);
     gametime:=strtoint(msg);
   end;
end;

А как сделать так, чтобы на сервере выделить данного клиента и он в свою очередь смог выловить данные от этого клиента?
Если можно опишите что должен делать сервер и что клиент(например через таймер) в этот момент.


 
alienserg   (2004-06-22 01:41) [1]

inface ©   (21.06.04 12:27)  
Всякий раз, когда клиент шлет серверу строку, на сервере происходит событие OnExecute. Там и лови все, что приходит от клиента. Посмотри Indy ChatDemo.
Кстати имей ввиду, что когда ты по нажатию кнопки делаешь
TIdPeerThread(Client.Thread).Connection.WriteLn(Msg);
то все это дело выполняется в основном VCL потоке, а не в потоке Client.Thread
В случае, если надо инициировать передачу сообщений с сервера по уже открытому connection одновременно с отсылкой сообщений внутри OnExecute, то правильно будет расставлять Critical Sections, чтобы подстраховаться от одновременной отсылки по одному connection из двух разных тредов.



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

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

Наверх




Память: 0.45 MB
Время: 0.038 c
1-1091708352
Coder: TCoder;
2004-08-05 16:19
2004.08.22
"..." (переменное число параметров)


1-1092038545
Mitrofan
2004-08-09 12:02
2004.08.22
Поместить форму с компонентами в DLL


1-1092055260
Arnold
2004-08-09 16:41
2004.08.22
Как создать нестандартную форму???


1-1091688762
Coder: TCoder;
2004-08-05 10:52
2004.08.22
Хэш


3-1091442034
rosl
2004-08-02 14:20
2004.08.22
interbase





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