Hallo,
Immer wieder TCP/IP mit Indy,
Ich kriege nicht in lauf fahrscheinlich elementare sache:
Ich muss Daten senden von TidTCPServer zu TIdTCPClient
Server :
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| procedure TForm2.IdTCPServer1Execute(AContext: TIdContext); Var S : TSendRecord; memVCL : TidStreamVCL; mem : TMemoryStream; begin If Not AContext.Connection.IOHandler.Readable Then Exit;
Value := AContext.Connection.IOHandler.ReadInteger; AContext.Connection.IOHandler.Write(Integer (100)); S.A := 'IntToStr = ' + IntToStr (Value); mem := TMemoryStream.Create; memVCL := TidStreamVCL.Create(mem); mem.Write(S, SizeOf (s)); memVCL.Position := 0;
AContext.Connection.IOHandler.Write (memVCL, memVCL.Size); memVCL.Free; mem.Free; end; |
Da läuft's noch:
Client :
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| Var S : TSendRecord; memVCL : TidStreamVCL; mem : TMemoryStream; I : Integer; begin IdTCPClient1.IOHandler.Write (Integer (100)); While Not IdTCPClient1.IOHandler.Readable Do Begin End;
If IdTCPClient1.IOHandler.Readable Then Begin mem := TMemoryStream.Create; memVCL := TidStreamVCL.Create(mem); I := IdTCPClient1.IOHandler.ReadInteger; IdTCPClient1.IOHandler.ReadStream(memVCL, SizeOf (S)); memVCL.Position := 0; mem.Read(S, SizeOf (S)); Memo1.Lines.Add(S.A); memVCL.Free; mem.Free; End; |
Bei der { Schleife } bleib er hängen, es gibts IdTCPClient1.IOHandler.Readable nur False.
Konnte mir jemand sagen was da falsch wäre oder noch besser Funktionierende beispiel geben, wo daten von Server zu gesendet und empfangen können.