Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Server-Client TCP in Delphi

    Ciao a tutti...mi sono appena inscritto al forum e ho visto che ci sono persone davvero molto preparate e competenti...
    sto facendo un applicazione client - server in delphi 7 usando i componenti di indy 10 per scambiare stringhe. ho trovato gia dei programmi in rete, il server e il client si connettono,come faccio a scambiare stringhe?ho provato a usare SendCmd sull'onWork del client e readlln sull onExcute del server, ma nn riesco a mandare niente...qualcuno mi diceva ke devo impostare l'IOhandler...scusate la mia superignoranza in materia...ma sono con l'acqua alla gola e se qualcuno potesse "assistermi",magari qualcuno ke ha gia lavorato con cose del genere mi salverebbe davvero la vità..in questo momento sono così..=> ....grazie x l'attenzione

  2. #2
    Se si tratta di una cosa semplice a livello dimostrativo puoi aprire un socket mediante il componente IdTCPServer al quale ti connetterai con il componente IdTCPClient.
    Per mandare la riga, una volta che userai IdTCPClient.IOHandler.WriteLn('quellochevuoi'). Lato server verrà attivato un evento OnRead (oppure OnExecute, non mi ricordo più).
    Se però devi fare un programma molto articolato non usare Indy lato server, il componente IdTCPServer è pessimo. Usa ICS oppure Synapse.

  3. #3
    grazie mille per l'interessamento....per quello ke devo fare io va bene il TCPServer...
    scusa ancora se approfitto della tua conoscenza....io ho messo sampleclient.IOHandler.WriteLn(m);
    dove m è la stringa ke voglio mandare all'interno dell'evento onWork...ma mettendo un breakpoint vedo ke nn va mai in questo evento...devo kiamarlo da un altra procedure?
    poi ti volevo kiedere un'altra cosa...se si disconnette il server quando il client è ancora connesso succede un casino...c'è un modo per gestire la cosa senza dover riavviare l'eseguibile?
    ancora grazie....

  4. #4
    Quello è uno dei punti critici del componente IdTCPServer. Comunque mi sembra che l'evento che viene generato quando c'è qualcosa da leggere sia OnExecute

  5. #5
    io ssu onexcute ho messo questo codice..

    procedure TfrmMain.ServerExecute(AContext: TIdContext);
    var
    LLine: string;
    LCmd: string;
    begin

    with AContext.Connection.IOHandler do try
    LLine := ReadLn;
    LCmd := Fetch(LLine);
    edit1.Text := LLine;
    finally WriteBufferClose; end;

    end;

    l'ho estrapolato da un esempio trovato in rete...

    così come ho inserio nella parte client questo codice

    procedure TfrmMain.SampleClientWork(Sender: TObject; AWorkMode: TWorkMode;
    const AWorkCount: Integer);
    var
    m,s : string;
    begin
    m := edit1.text;
    sampleclient.IOHandler.WriteLn(m);
    edit1.Text :='stringa mandata';
    end;


    xò nn va mai in questo evento....cosa sto sbagliando?nn credo sia una cosa pazesca da fare,questo demo ke ho trovato connette il o i client al server...e con una specie di conto alla rovescia li disconnette..e li riconnette ancora...io ne voglio connettere solo uno...e voglio scambiare stringhe....se vuoi ti posto il codice di client e server....

    nn ti ringrazierò mai abbastanza...

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 © 2024 vBulletin Solutions, Inc. All rights reserved.