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

Вниз

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

Наверх




Память: 0.47 MB
Время: 0.044 c
1-1091646101
Фёдор Мегатронов
2004-08-04 23:01
2004.08.22
Как быстро достать информацию по данному указателю ?


1-1091613759
sachem
2004-08-04 14:02
2004.08.22
Как запретить форме перересовываться?


1-1092119059
sdw_syscoder
2004-08-10 10:24
2004.08.22
Как разместить надпись или кнопку в правой стороне ToolBar a


3-1091415001
r00t
2004-08-02 06:50
2004.08.22
Data Type в XML Table


3-1090602268
Yaral
2004-07-23 21:04
2004.08.22
*.doc в blob