Indy Components

7 отговора 258 прегледа
#1

Indy Components

Някой може ли да ми каже как да приемам съобщенията изпратени от сървара до клиента.? (разбрах как да се получават чрез таймер:

Код:
procedure TForm1.Timer1Timer(Sender: TObject);
var s:string;
begin
if idtcpclient1.Connected then
begin
s:=idtcpclient1.ReadLn;
if s<>'' then memo1.Lines.Add(s);
end;
end;


обаче така формата на клиента става неактивна)
Ако някой знае как клиента може да приеме съобщение от сървара да пише
Благодаря ви предварително

Отговор
в отговор на DayDio #2

Re: Indy Components

Аз Indy не ползвам, но кода за четене/запис го сложи в събитието OnWork.

чети и дишай по-леко
Отговор
в отговор на Pechenia #3

Re: Indy Components

Vish tozi sait [линк]. Ako neti pomogne pishi
mi na [email protected] da ti pratia INDY Project (INDY Chat Server i INDY Chat Client)

Отговор
в отговор на DayDio #4

Re: Indy Components

някой може ли да ми напише функция за изпращане на някакво съобщение от idTCPServer до клиент
и функция за приемане на това съобщение от idTCPClient
възможно по най-простия начин

Отговор
в отговор на DayDio #5

Re: Indy Components

ми виж [линк]
Между другото аз ползвам събитията на TidТCPIntercept

Отговор
в отговор на DayDio #6

Re: Indy Components

От страна на сървъра ф-ята за получаване на стринг изглежда така:
void __fastcall TSrvMainForm::TCPSvrExecute(TIdPeerThread *AThread)
//Това е прихващане на събитието TIdTCPServer->Execute()
{
String strIn = AThread->Connection->ReadLn("\r\n"); // четене
.....
AThread->Connection->WriteLn("ala bala"); // изпращане на стринг на клиента
}


От страна на клиента с използване на TIdTCPClient - CliSock
CliSock->Connect();
CliSock->WriteLn("ala bala); // писане
String strTmp = CliSock->ReadLn("\r\n",m_iTimeOut); // четене
CliSock->Disconnect();

Постави във основната ф-ма TIdAntiFreeze компонента за да не се блокира нишката за прихващане на събитията от усера в клиента и сървърната част.
Добави си кода за прихващане на изключения - махнал съм го за да не разводнявам нещата.
Това е С код така че, замени тези смешни символи "->" с точка + счупените скоби

Отговор
в отговор на Veso #7

Re: Indy Components

неможах да си преведа това: void __fastcall TSrvMainForm::TCPSvrExecute(TIdPeerThread *AThread), но за сега не ми и трябва
Много ти благодаря за помощта.

Отговор
в отговор на DayDio #8

Re: Indy Components

Ами то Делфито ще ти го напише :-)
Постави TIdTCPServer, превключи на Еvents таба му и кликни 2 пъти в/у OnExecute. TSrvMainForm e името на моята форма в/у която е поставен този компонент.

Отговор