Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di hfish
    Registrato dal
    Dec 2000
    Messaggi
    3,180

    [c++] server udp multithread

    buongiorno a tutti

    mi trovo a dover scrivere un server udp multithread, ed avendo a che fare con un paradigma connectionless mi trovo un po' in difficoltà a pensare ad una soluzione.

    il protocollo da implementare, abbastanza semplice, prevede 4 messaggi

    c --> s
    s --> c
    s --> c
    c --> s

    per ora ho implementato il tutto come macchina a stati, e lancio un nuovo thread ogni volta che la recvfrom sul server ha successo.

    questo mi mette in difficoltà dopo, in quanto nessun nuovo thread può mettersi in ascolto sulla stessa porta occupata dal server principale!

    una soluzione che mi è venuta in mente è cambiare leggermente il protocollo, facendo sì che il thread appena creato comunichi al client una NUOVA porta per le comunicazioni...

    c'è qualche altra soluzione interessante?

    grazie
    Non dobbiamo trascurare la probabilità che il costante inculcare la credenza in Dio nelle menti dei bambini possa produrre un effetto così forte e duraturo sui loro cervelli non ancora completamente sviluppati, da diventare per loro tanto difficile sbarazzarsene, quanto per una scimmia disfarsi della sua istintiva paura o ripugnanza del serpente.

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    147
    Proprio perché connectionless, un server UDP è più semplice da implementare... Non ragionare come se stessi in TCP, in cui hai un thread ed un canale per ogni connessione: qui hai un server che è in ascolto su una porta (ed è il primo thread), tutti i datagrammi indirizzati a lui (che arrivano da tutti i client) li riceve e li mette in una coda; un secondo thread preleva un messaggio alla volta dalla testa della coda, lo elabora e lo rispedisce al mittente... Niente di più, niente di meno...

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.