Witam wszystkich,
Pierwszy raz w mojej 6 letniej karierze piszę pytanie na forum programistycznym, także proszę o większą wyrozumiałość. Sprawa dotyczy Indy10, wiem- oklepany temat. Siedzę już nad tym bite parę godzin. Oczywiście przeszukałem internet, przejrzałem przykłady. Prosta aplikacja klient-server:
///
{
*****************************************
***************SERVER********************
}
procedure TTCPListener.HandleIncomingConnection(AContext: TIdContext);
var
MsgString: String;
MsgLength: Integer;
begin
MsgLength := AContext.Connection.IOHandler.ReadLongInt;
if Assigned(OnMessageReceived) then
begin
if Assigned(OnDataReceive) then
OnDataReceive(AContext);
OnMessageReceived(MsgString, AContext);
end;
end;
{
*****************************************
***************CLIENT********************
}
procedure TTCPSender.Send(ADataToSend: string; AContext: TIdContext);
var
data: string;
begin
if AContext <> nil then
begin
AContext.Connection.IOHandler.Write(ADataToSend);
end
else
begin
if not FTCPClient.Connected then
begin
try
FTCPClient.Connect;
except
on Exception do
begin
//Add2Prot('Connection to host ... cannot be established')
end;
end;
end;
FTCPClient.IOHandler.Write(123);
end;
end;
Problem następujący: Funkcja ReadLongInt nie zwraca żadnych danych. Spodziewam się że jest to jakiś żenujący błąd i z góry przepraszam za ewentualny stres przy czytaniu. Kod działa, gdy używam ReadLn + WriteLn lub Write + AllData.
Pozdrawiam
Michał