Ho bisogno di aiuto per capire come trasferire un record tramite Indy TCP Server/Client. Ho 2 programmi, in I mettere client e in un altro server. Su client su un pulsante ho messo collegare: Il cliente è TIdTCPClientDelphi TidTCPServer e TidTCPClient che trasferiscono un record
Client.Connect();
E al lato server Io sono l'aggiunta di una linea a memo che client è connesso, il caso ServerConnect
Protocol.Lines.Add(TimeToStr(Time)+' connected ');
Per inviare dati da cliente ho un record, che voglio inviare:
Tmyrecord = record
IPStr: string[15];
end;
e ho un pulsante di invio là:
procedure Tform1.ButtonSendClick(Sender: TObject);
var
MIRec: Tmyrecord;
msRecInfo: TMemoryStream;
begin
MIRec.IPStr := '172.0.0.1';
msRecInfo := TMemoryStream.Create;
msRecInfo.Write(MIRec, SizeOf(MIRec));
msRecInfo.Position := 0;
Client.IOHandler.Write(msRecInfo);
end;
Al lato server OnExecute Ho il seguente codice, ho lo stesso tmyrecord dichiarato al lato server troppo:
procedure TServerFrmMain.ServerExecute(AContext: TIdContext);
var
MIRec: Tmyrecord;
msRecInfo: TMemoryStream;
begin
if AContext.Connection.Connected then
begin
AContext.Connection.IOHandler.CheckForDataOnSource(10);
if not AContext.Connection.IOHandler.InputBufferIsEmpty then
begin
msRecInfo:= TMemoryStream.Create;
AContext.Connection.IOHandler.ReadStream(msRecInfo);
msRecInfo.Read(MIRec, sizeOf(msRecInfo));
ShowMessage(MIRec.IPStr);
end;
end;
end
Non so perché non funziona, perché non posso vedere indirizzo IP che ho scritto dal lato client. Voglio leggere un record (msRecInfo) sul lato server che sto inviando dal lato client. Voglio accedere ai miei elementi del record, in questo caso voglio leggere l'elemento IPSTR del mio record. Quando premo il pulsante di invio da un lato client, l'applicazione si blocca, parte del server.
Grazie mille in anticipo
Sto cercando di inviare un record, msRecInfo, consente di dire quale ha l'elemento IPSTR. Voglio inviare quel record e leggerlo dal server.Voglio leggere IPSTR dal mio record sul lato server –
Solo un suggerimento per ripulire la tua domanda e chiarire che questa è la tua unica domanda. –
Grazie per il suggerimento, modificato la mia domanda, spero sia meglio ora –