Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003

    [Delphi] Creare protocollo

    Salve

    La domanda che vorrei porre è più teorica che pratica.
    Sto sviluppando un'applicazione client/server ed ho bisogno di creare ex novo un protocollo per permettere al server di effettuare delle operazioni.

    Un esempio banale è che il server deve poter gestire dei login con user e passwd, ed assegnare un identificativo ai client dopo aver effettuato un controllo su un database.
    Stavo pensando di far inviare dal client un comando di tipo "login", al che il server reinvia una risposta di ack ed il client invia user e pass.

    Ora, banalmente, come gestireste voi questo scambio di info tra client e server?
    Stavo pensando di inviare tutto in un'unica stringa (del tipo "login:username,password") ma non saprei come gestirla.

  2. #2
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003
    Ho pensato di risolvere usando le stringlists, essendo possbile inviarle sul socket (la prima stringa della lista rappresenta il comando e le successive eventuali parametri).

    Ora però mi sorge un altro problema:
    codice:
    procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
    var
     commands : TStrings;
    begin
     commands := TStringList.Create;
     Label1.Caption := 'ricezione dati in corso';
     AThread.Connection.ReadStrings(commands,-1);
     if (commands.strings[0] = 'login') then
      if (commands.strings[1] = 'pippo') and (commands.strings[2] = 'pluto') then
       ShowMessage('Login corretto')
      else
       ShowMessage('Login errato');
    end;
    Non mi compare alcun popup.
    Sicuramente l'evento viene soddisfatto dato che il label1 viene riempito con la stringa "Ricezione dati in corso".

    Cosa delle stringlist mi sfugge? :master:

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da VaLvOnAuTa
    Non mi compare alcun popup.
    Probabilmente, la prima condizione non è verificata.

    Originariamente inviato da VaLvOnAuTa
    Sicuramente l'evento viene soddisfatto dato che il label1 viene riempito con la stringa "Ricezione dati in corso".
    Cosa delle stringlist mi sfugge? :master:
    Usa la proprietà Items per accedere agli elementi della TStringList.

    Il tuo codice provoca un "memory leak": crei un'istanza della TStringList ma poi non la distruggi chiamando il metodo Free. Aggiungi questa correzione, magari aiutandoti con il costrutto Try...Finally.
    codice:
    S := TStringList.Create;
    try
      // Fai qualcosa con S...
    finally
      S.Free;
    end;
    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003
    Sì infatti la condizione non veniva verificata.

    Me tapino che ancora non mi arrendo alla potenza del debug

    Comunque ho usato try..finally come suggerito da te.
    Sto abusando della tua disponibilità e te ne chiedo scusa. Grazie mille per l'aiuto

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da VaLvOnAuTa
    Sì infatti la condizione non veniva verificata.
    Me tapino che ancora non mi arrendo alla potenza del debug
    Il debugging è fondamentale.

    Originariamente inviato da VaLvOnAuTa
    Comunque ho usato try..finally come suggerito da te.
    Ottimo!

    Originariamente inviato da VaLvOnAuTa
    Sto abusando della tua disponibilità e te ne chiedo scusa. Grazie mille per l'aiuto
    Se posso dare un rapido suggerimento su qualcosa che conosco (o penso di conoscere)... non vedo perchè non farlo, giusto?

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.