[Socket] Client e server

di il
6 risposte

[Socket] Client e server

Ciao. Il panorama è il seguente:
ho più client sullo stesso sistema ed un server che gestisce le richieste dei client in multithreading.
I client ricevono i dati su una porta UDP 9090. In che modo i vari client possono riuscire a sfruttare la stessa porta e contemporaneamente ricevere dati dal server senza mischiare i dati in arrivo?

Es. Due client inviano ad un server la stringa contenente i propri nomi: A e B. Poi restano in attesa sulla porta UDP 9090 per ricevere un saluto dal server: "Ciao A" e "Ciao B". Quando il server manda il saluto, come viene identificato il client esatto ?

Ciao e buona giornata.

6 Risposte

  • Re: [Socket] Client e server

    I due client sono attivi sullo stesso computer?
  • Re: [Socket] Client e server

    Sisi sullo stesso computer.
  • Re: [Socket] Client e server

    Specifico meglio.
    Posso avere più client sullo stesso computer che si connettono ad un server tramite una socket TCP sulla porta 8080.
    Il server una volta ricevuto un comando, invia al client i dati su una connessione UDP sulla porta 9090.
    Non capisco quale strategia utilizzare per inviare le risposte sulla connessione UDP.
    In pratica il server si mette in ascolto su una TCP 8080 e gestisce le varie richieste in multithreading, poi si connette alla UDP 9090 del client per ricevere i dati. Quindi in conclusione possono coesistere multiple socket UDP in ascolto dei vari client sullo stesso computer? Se si i dati ricevuti simultaneamente verrebbero mischiati o ricevuti bene??

    Consigli?
  • Re: [Socket] Client e server

    La domanda mi sembra un po'... confusa.
    Possono esistere ovviamente più socket UDP su un singolo computer.
    La connessione è data da una quadrupla: Ip:porta client, Ip:porta server.
    Per distinguere i vari client puoi operare così (cioè con ip:porta), oppure (meglio ancora nel caso ipotetico di qualcosa tipo fastweb) aggiungi nel messaggio il mittente
  • Re: [Socket] Client e server

    Sì, però come gestisco più socket UDP legate allo stesso IP e numero di porta, sullo stesso computer!?!?!
  • Re: [Socket] Client e server

    Solitamente ogni client è associato ad una porta casuale assegnata dal sistema operativo (quindi non devi fare la bind, o farla mettendo 0 come porta). Ciò serve anche ad evitare che la porta che cerchi di assegnare sia già utilizzata da un altra applicazione che non è sotto il tuo controllo.

    Se proprio vuoi proseguire sulla tua strada, allora devi fare come dice +m+, ovvero inserire in ogni messaggio inviato dal client un id, dopodiché nella risposta il server mette lo stesso id. Però ti complichi parecchio la vita.
Devi accedere o registrarti per scrivere nel forum
6 risposte