title image


Smiley nope
Am besten leitest du eine Klasse von TThread ab, welche den TIdTCPClient aggregiert...



type TReadEvent = procedure (TCPClient: TIdTCPClient, ReadByte: Byte);

type TMyNonBlockingTCPClient = class(TThread)

private

FOnRead: TReadEvent;

public

oIdTCPClient: TIdTCPClient;

// constructor

procedure Execute; overwrite;

published

property onRead: TReadEvent read FOnRead write FOnRead;

end;



implementation



procedure TMyNonBlockingTCPClient.Execute;

var b: Byte;

begin

while not Terminated do begin

oIdTCPClient.wasauchimmer.weissichnichtauswendig.Read(b, 1);

if Assigned(FOnRead) then FOnRead(oIdTCPClient, b);

end;

end;





Damit hast du einen read event, der dir immer ein byte liefert. Falls du das ganze Packet auf einmal willst, dann musst du tiefer rein gehen und tatsächlich guggen, wo der receive buffer gefüllt wird.



gre

-b

P.S. Der ganze code habe jetzt schnell hier geschrieben, d.h. wahrscheinlich hat er noch tonnenweise fehler (syntax, etc...) drin, die du aber anpassen können solltest...

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: