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

    [DELPHI] Uso del TIdCmdTCPServer e Client con Indy10

    Avendo così settato i componenti:

    Server:
    Porta 7676
    Client:
    Host: IP.CurrentIP (cioè il mio ip)
    Port: 7676

    Come mai quando vado a eseguire:
    Client.IOHandler.WriteLn('testo');

    non viene chiamato assolutamente l'evento ServerOnExecute ??
    cioè il messaggio viene inviato, ma sembra che il server non lo vede...

    che sbaglio?? ah ovviamente Server.Active=true eClient.Connected pure


  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,288
    Il server TIdCmdTCPServer è progettato appositamente per rispondere a precisi comandi; se vuoi che funzioni, devi definire vari CommandHandler, uno per ogni comando che decidi di supportare secondo il tuo protocollo personalizzato.

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

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

  3. #3
    per scambiare buffer di dati, mi consigli di usare il CmdTCPServer o il TCPServer semplice??

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,288
    Originariamente inviato da gygabyte017
    per scambiare buffer di dati, mi consigli di usare il CmdTCPServer o il TCPServer semplice??
    Credo che il "command server" sia più semplice da usare in quanto già pronto a ricevere comandi a cui dare una risposta.

    Nel caso del "server classico", devi utilizzare le funzioni di I/O di Indy per leggere e scrivere qualsiasi cosa; se devi acquisire una richiesta rappresentata da un'istruzione (stringa), allora tanto vale semplificare usando il Command Server.

    Nello specifico, tutto vale poi in base a ciò che devi realizzare e a come intendi strutturare il tuo protocollo.

    Buon divertimento!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  5. #5
    il fatto è che devo trasferire dei files, quindi i comandi non mi sono molto utili... avevo provato anche l'UPD ma se il massimo dei dati inviabili è 64k è troppo poco...

    mi sa che reinstallo Indy 9, il 10 ha documentazione un pò scarsa e non ci sono esempi a sufficienza nè sul web ne sulle demo...

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,288
    Originariamente inviato da gygabyte017
    il fatto è che devo trasferire dei files, quindi i comandi non mi sono molto utili... avevo provato anche l'UPD ma se il massimo dei dati inviabili è 64k è troppo poco...
    Non puoi iniziare un trasferimento senza aver prima instaurato un colloquio, no?

    L'UDP non è adatto al trasferimento di file poiché non c'è un controllo sull'errore come avviene in TCP; o fornisci tu il controllo (via CRC, MD5 o qualche altro strumento analogo) oppure usi TCP.

    Originariamente inviato da gygabyte017
    mi sa che reinstallo Indy 9, il 10 ha documentazione un pò scarsa e non ci sono esempi a sufficienza nè sul web ne sulle demo...
    Queste sono problematiche che esulano dalla versione di Indy, ma riguardano il corretto svolgimento di un colloquio tra un client e un server e la scelta consona di protocolli adatti alle esigenze da risolvere.

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

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

  7. #7
    scartiamo prima di tutto UDP perchè già trovo difficoltà a istaurare una semplice architetture client-server, figurati a controllare hash e crc .

    Quindi la scelta ricade su TCP.
    Ma in Indy10 ci sono 2 tipi di server TCP: il classico TIdTCPServer e poi TidCmdTCPServer. Leggendo la guida tra le differenze tra indy 9 e 10, si dice che il "vecchio" TIdTCPServer è diventato ora TIdCmdTCPServer, e si dice anche che invece di usare direttamente i Writeln o Readln, bisogna passare per l'oggetto IOHandler.Writeln IOHandler.Readln etc.

    Quindi: che centrano i command??

    Quello che ti chiedo se gentilmente potresti dirmi è:
    1) TidTCPServer o TIdCmdServer ??
    2) Devo fare in modo che alla pressione di un tasto, certi dati binari (quindi file, ma anche stringhe) vengano inviati dal Client al Server, e che il Server notifichi l'avvenuta tranlazione leggendo i dati arrivati e memorizzandoli in un buffer.

    Mi potresti aiutare??

    Grazie 100000

  8. #8

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.