Главная страница
    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.043 c
1-1092058858
ПЛОВ
2004-08-09 17:40
2004.08.22
Вопрос по чтению строк из текстовых файлов


6-1088006811
AleX2004
2004-06-23 20:06
2004.08.22
Почтовый клиент


3-1090850411
Manfred
2004-07-26 18:00
2004.08.22
AccessViolation при закрытии клиента


6-1086782787
Anton.
2004-06-09 16:06
2004.08.22
Как получить сообщение от TCPServera?


4-1089432503
Геннадий
2004-07-10 08:08
2004.08.22
Как запустить программу от имени заданной учётной записи?





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