Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577

    [C++] applicativo server

    sto implementando un server che rimane in ascolto ed in base ai comandi che arrivano si comporta di conseguenza. I comandi sono del tipo:

    LINEA,X,Y,Z;

    Il numero di comandi è variabile; il server in ascolto risponde attraverso un evento e per ogni evento può non corrispondere un comando completo; in alcuni casi i comandi arrivano incompleti quindi mi chiedevo quale tipo di buffer implementare e se l'uso della strtok() per prelevare i vari argomenti dei comandi è consigliabile in questi casi.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    La strtok funziona sempre ovviamente sapendo cosa aspettarsi. Il comando deve essere concluso da un carattere noto, ad esempio \n
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577
    Quote Originariamente inviata da oregon Visualizza il messaggio
    La strtok funziona sempre ovviamente sapendo cosa aspettarsi. Il comando deve essere concluso da un carattere noto, ad esempio \n
    ciao,
    quindi, supponiamo che desidero inviare il comando LINEA,x,y,z; inviatomi da un client ad una funzione interna implementata sull'applicativo server. Potrebbe accadere che attraverso la socket però il comando LINEA,x,y,z; mi arriva in due fasi, cioè, lato server vengono generati due eventi prima di avere il comando completo: come tengo memoria di ciò che mi arriva?

    Ti dico anche che i comandi inviati da un client potrebbero essere n.
    Ultima modifica di misterx; 24-12-2014 a 08:18

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Componi in memoria il messaggio in arrivo e lo passi alla funzione che lo deve interpretare solo quando arriva il carattere \n
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577
    supponi che arriva buffer="LINEA,x,y,z;\nLINEA,x"; e solo successivamente buffer=",y,z;";

    Devi tenere per forza due buffer o no?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Quote Originariamente inviata da misterx Visualizza il messaggio
    supponi che arriva buffer="LINEA,x,y,z;\nLINEA,x"; e solo successivamente buffer=",y,z;";

    Devi tenere per forza due buffer o no?
    Estrai dal buffer la prima parte completa e lascia il resto. Passa la prima parte alla funzione che la gestisce.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577
    ciao,
    sono stato assente per un pò di tempo e non ho ancora risolto questo mio problema. Mi dici di estrarre la prima parte del buffer, ma il medesimo buffer viene sovrascritto al successivo evento generato dalla socket

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577
    mi chiedevo anche se nel momento in cui avviene una lettura da socket a causa dell'evento che segnala l'arrivo di dati viene gestito come se fosse un thread e cioè, se nell'istante t1 il programma sta elaborando dati arrivati da una precedente lettura ed arrivano nuovi dati che accade?
    La socket viene messa in attesa sino al termine della elaborazione oppure si perde quanto stava facendo?

    grazie

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.