Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    7

    [C] Mantenere un server nello stato di "Listen"

    Ciao a tutti,
    sto facendo delle prove a scrivere client e server che si scambiano messaggi. Il problema è che il mio server accetta solo il primo client che si connette, esegue le operazioni che gli ho chiesto di fare nel codice e poi in maniera "sequenziale" - direi - termina.
    Vorrei che invece rimanesse in "listen" ed "esaudisse" tutte le richieste di quanti client voglio(esempio: lancio una volta il server e poi eseguo n client a mio piacimento).
    Ok, mi sono spiegato abbastanza male, ma se c'è qualcuno che ha capito cosa intendo, se mi potesse suggerire qualcosa, gliene sarei molto grato

  2. #2
    Ciao, non ho ben capito il problema ma direi che normalmente quello che si fa è:
    - creare il socket del server
    - fare la bind sulla porta/indirizzo desiderato
    - fare la listen

    a questo punto arriva la parte di gestione dei client che si connettono:
    - si fa la accept e si attende che termini
    - di ritorno la accept torna un socket che rappresenta il canale di comunicazione con il client
    - si crea un thread che si prende carico del client
    - si ritorna a fare la accept

    Il socket del server di per se è sempre in listen (fino a quando non si chiude il suo socket).

    Spero che sia questo quello che volevi.

    Ciao a tutti e buon Natale

  3. #3
    La tua richiesta, in pratica, sarebbe "come gestisco client/connessioni multipli/e sullo stesso socket", esatto?
    Dipendentemente dal tipo di approccio (asincrono, basato su thread/sotto processi o altro) una buona abitudine è quella di trattare ogni nuova connessione/istanza in una classe/funzione a parte subito dopo l'accept.
    L'approccio più classico per fare in modo che il server rimanga sempre "in listening" è quello di mettere accept all'interno di un ciclo infinito, un metodo più elegante, raffinato e performante è quello di iterare sul socket tramite select/poll che, imho, è preferibile.
    L'argomento non è semplice, cmq. Ti conviene leggerti degli how-to appositi.
    Il difficile è capire quale metodologia sia migliore dipendentemente dalla tuia esigenza dato che la programmazione con i socket offre differenti approcci, ognuno con i propri vantaggi e svantaggi.
    Rilasciata Python FTP Server library 0.5.1
    http://code.google.com/p/pyftpdlib/

    We'll be those who'll make the italian folks know how difficult can be defecating in Southern California without having the crap flying all around the house.

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.