Sviluppo libreria Socket

di il
6 risposte

Sviluppo libreria Socket

Salve ragazzi, una semplice domanda... Trovereste utile voi una libreria che sfrutti le socket capace di inviare e ricevere messaggi basandosi su dei protocolli (parliamo di classi create al momento che estendono una determinata "Protocol Class") che possono comunicare in base a regole date da chi crea questi protocolli?

Ne sto finendo una, per ora supporta tcp/udp, multithreading (in udp devo ancora pensare come).

Aggiungerò il supporto per l'ssl.


Lo chiedo perchè mi piacerebbe pubblicarla una volta finita e volevo sapere se il gioco vale la candela...

che ne pensate? ovviamente il tutto in java (ne farò un'altra clone in c++, forse multipiattaforma)

6 Risposte

  • Re: Sviluppo libreria Socket

    Francesco93 ha scritto:


    Trovereste utile voi una libreria che sfrutti le socket capace di inviare e ricevere messaggi basandosi su dei protocolli (parliamo di classi create al momento che estendono una determinata "Protocol Class") che possono comunicare in base a regole date da chi crea questi protocolli?
    E cioè? Detto così, scusa, significa poco/nulla. Messaggi di che tipo? Per gli "umani"? O si tratta di un middleware per la comunicazione tra applicazioni? Quale è il contesto d'uso? Quale problematica risolverebbe la tua soluzione?
  • Re: Sviluppo libreria Socket

    In teoria qualunque genere di comunicazione tra due computer... Ad esempio dal semplice telnet a messaggi più complessi trattabili come insiemi di bytes.

    La problematica da risolvere sarebbe proprio quella di comunicare con altri host... Non so se mi spiego... Diciamo che qualunque tipo di applicazione client/server può sfruttare questa libreria per inviare e ricevere messaggi.
  • Re: Sviluppo libreria Socket

    Se fa le seguenti cose, potrebbe essere interessante:

    == invio e ricezione di MESSAGGI

    dove un MESSAGGIO e' una sequenza arbitraria di byte, di lunghezza arbitraria (fino a 2^64-1 byte, ma anche ZERO byte)

    1) supporto TCP, UDP, PGM (che cosa e' il PGM? Studia )
    2) per l'UDP deve poter richiedere i pacchetti persi (se no e' facile)

    invio:
    1) deve poter inviare messaggi di dimensione arbitraria
    2) deve poter concatenare messaggi piccoli, se necessario, per efficienza
    3) deve poter smembrare messaggi grandi, se necessario
    4) deve poter applicare la compressione
    5) deve poter applicare la crittografia simmetrica
    6) deve poter gestire un ricevente lento

    client:
    1) deve poter ricollegarsi in caso di caduta della connessione, e inviare i messaggi che non e' riuscito ad inviare, o ricevere i messaggi che gli mancano
    2) deve mantenere delle statistiche

    ricezione:
    1) deve gestire in automatico (0-configurazione) i punti 2,3,4,5 di [invio].

    server:
    1) deve poter accettare un numero arbitrario di client
    2) si deve accorgere se un client che ha una connessione aperta, e' ancora vivo o e' morto
    3) deve notificare l'arrivo di nuovi client, o la loro disconessione
    4) deve supportare l'invio di messaggi punto a punto e broadcast
    5) deve supportare il concetto di 'canale' (publish/subscriber): tutti i client collegati a quel canale riceveranno gli stessi messaggi
    6) deve supportare client con velocita' diverse
    7) deve supportare le blacklist
    deve mantenere delle statistiche

    DEVE ESSERE OTTIMAMENTE DOCUMENTATO!
    DEVE ESSERE SCRITTO IN MODO CHIARO, PULITO, ELEGANTE!
  • Re: Sviluppo libreria Socket

    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.
  • Re: Sviluppo libreria Socket

    Francesco93 ha scritto:


    DOCUMENTAZIONE? ho intenzione di scriverci un libricino che spieghi a fondo come utilizzare la libreria.
    Una User guide ... con esempi ... ecc.. magari online e/o in PDF sono tutte cose ovviamente ok e utili. Ma in Java "la" documentazione di cui si parla normalmente e a livello basilare è la documentazione "javadoc". Possibilmente ben scritta e in lingua inglese.
  • Re: Sviluppo libreria Socket

    Sarà fatto nel frattempo continuo piano piano a sviluppare le prime cose
Devi accedere o registrarti per scrivere nel forum
6 risposte