Dunque, il TCP è ok, l'UDP no, e non saprei come fare una connessione UDP multithreading ma ci ragionerò e prevederò dei metodi per avvicinarmi all'affidabilità del TCP. ovviamente l'invio di file sarà da evitare con questo protocollo che, anche se avrà funzionalità affidabili simili al TCP, comunque risulterà meno efficiente (sbaglio?)
PGM? mai sentito parlarne ma ho fatto delle ricerche ed è molto interessante.
Passiamo ai punti:
(INVIO):
1) E' già possibile inviare qualunque tipo di messaggio, se è un oggetto sarà serializzato, se non lo è, verrà inviato come semplice array di bytes dopo essere stato correttamente passato in bytes.
2) Possibile. L'invio di file grandi, ad esempio, manda tante piccole parti del file, sfruttando il tcp, l'host ricevente non perde pacchetti e può tranquillamente concatenarli nel file, ma è solo un esempio.
3) Credo vada a braccetto col punto precedente.
4) Non ho la più pallida idea di come si applichi la compressione dati, puoi darmi qualche riferimento?
6) Intendi l'SSL/TLS?
7) E' possibile ricollegarsi, ma non ho ancora studiato un modo per ricominciare dal punto precedente.
8 ) Di che tipo?
(SERVER):
1) multithreading abilitato (in TCP, in UDP devo inventarmi qualcosa)
2-3) Notifica alla connessione e disconnessione di client, dopo un tot di secondi se non riceve alcun mex la connessione viene interrotta.
4) non ho pensato al broadcasting, che intendi per punto a punto?
5) non ho pensato al concetto di 'canale'
6) supportando il multithreading, ogni client ha a disposizione una propria connessione, che non influenza le connessioni concorrenti sul server.
7) non ho pensato alla blacklist.
DOCUMENTAZIONE? ho intenzione di scriverci un libricino che spieghi a fondo come utilizzare la libreria.
Amo scrivere codice in maniera chiara e correttamente indentata.