È probabile che entrambi i collegamenti TCP e RUDP vengano interrotti dal proprio ambiente, quindi è improbabile che il fatto di utilizzare RUDP sia di aiuto; ci saranno probabilmente momenti in cui nessun datagramma può passare ...
Ciò che è effettivamente necessario assicurarsi è che a) è possibile gestire il numero di client connessi, b) il protocollo dell'applicazione può rilevare ragionevolmente rapidamente quando si hai perso la connettività con un client (o server) ec) puoi gestire la riconnessione richiesta e la manutenzione dello stato della sessione di connessione incrociata per i client.
Finché ci si occupa di b) ec), non importa se la connessione continua a essere interrotta. Assicurati di progettare il tuo protocollo applicativo in modo da poter svolgere le attività in piccoli gruppi; quindi se stai caricando dei file, assicurati di inviare piccoli blocchi e che il protocollo applicativo possa riprendere un trasferimento interrotto a metà; non si vuole ottenere il 99% del percorso attraverso un trasferimento da 2 GB e perdere la connessione e ricominciare.
Per far funzionare correttamente il server è necessario un tipo di cache dello stato della sessione client in cui è possibile mantenere lo stato logico della connessione di un client oltre la durata della connessione stessa. Progettare fin dall'inizio di prevedere che una determinata sessione includa più connessioni separate. Lo stato della sessione dovrebbe avere una sorta di timeout, quindi se il client va via per lungo tempo non continua a consumare risorse sul server ma, per essere onesti, potrebbe semplicemente essere il caso di salvare lo stato su disco dopo un po.
In sintesi, non penso che la scelta del trasporto sia importante e vorrei andare con il TCP almeno all'inizio. Ciò che conta davvero è riuscire a gestire lo stato della sessione del client sul server e gestire il fatto che i client si connetteranno e si disconnetteranno regolarmente.
fonte
2010-11-15 08:25:56
Potrebbe anche essere interessato a verificare questa domanda: [Che cosa usi quando hai bisogno di UDP affidabile?] (Http://stackoverflow.com/questions/107668/what-do-you-use-when-you -Necessità-affidabile-UDP) –