Главная страница
    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.034 c
3-1091118297
cherrex
2004-07-29 20:24
2004.08.22
IBDataSet


14-1091675721
ORMADA
2004-08-05 07:15
2004.08.22
Версионность


3-1091024994
MORA
2004-07-28 18:29
2004.08.22
корректно ли я использую транзакции?


1-1091481675
QuestionX
2004-08-03 01:21
2004.08.22
Рисование на форме поверх всех компонентов


4-1089304211
_x_o_r_
2004-07-08 20:30
2004.08.22
USB порт





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