Visualizzazione dei risultati da 1 a 10 su 10

Discussione: I/O non bloccante

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    285

    I/O non bloccante

    Salve a tutti
    sto realizzando una "semplice" chat ad interfaccia testuale . Dovrei fare in modo che l' I/O ,sia lato client sia lato server , non sia bloccante . Questo perché l'utente deve avere sempre la possibilità di invio messaggio e di lettura . Con le "solite" operazioni di I/O , l'utente ad esempio non potrebbe leggere i messaggi provenienti dal server senza aver effettuato un input da tastiera e viceversa . ( Frutto della squenzialità delle operazioni I/O che si devono alternare) . Non so se sono stato chiaro . Spero in un aiuto! grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: I/O non bloccante

    Originariamente inviato da lionell88
    sto realizzando una "semplice" chat ad interfaccia testuale . Dovrei fare in modo che l' I/O ,sia lato client sia lato server , non sia bloccante . Questo perché l'utente deve avere sempre la possibilità di invio messaggio e di lettura . Con le "solite" operazioni di I/O , l'utente ad esempio non potrebbe leggere i messaggi provenienti dal server senza aver effettuato un input da tastiera e viceversa . ( Frutto della squenzialità delle operazioni I/O che si devono alternare) . Non so se sono stato chiaro . Spero in un aiuto! grazie
    "testuale" intendi non interfaccia grafica AWT/Swing ma input/output su una comune "console"?

    Se è su console ci sarebbe però una questione "pratica". Il cursore è solo in 1 punto, se l'utente sta digitando qualcosa (che dovrà poi inviare) e nel frattempo arriva "qualcosa" ..... come e dove lo visualizzi? Mica puoi tranciare a metà e metterti in mezzo a cosa sta digitando l'utente .....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    285
    bè si potrebbe fare che , dopo che l'utente abbia scritto , vengano letti i nuovi messaggi ... in ogni caso , cosa mi consigli ? come posso realizzare questo I/O non bloccante ?

  4. #4

    Re: I/O non bloccante

    Originariamente inviato da lionell88
    Salve a tutti
    sto realizzando una "semplice" chat ad interfaccia testuale . Dovrei fare in modo che l' I/O ,sia lato client sia lato server , non sia bloccante . Questo perché l'utente deve avere sempre la possibilità di invio messaggio e di lettura . Con le "solite" operazioni di I/O , l'utente ad esempio non potrebbe leggere i messaggi provenienti dal server senza aver effettuato un input da tastiera e viceversa . ( Frutto della squenzialità delle operazioni I/O che si devono alternare) . Non so se sono stato chiaro . Spero in un aiuto! grazie
    Che protocollo di comunicazione stai usando? TCP/IP?

    Se la memoria non mi inganna, l'ultima volta che ho usato Java per uno scopo simile (in realtà stavo programmando un cellulare con JME) ho usato 2 thread differenti per l'ascolto e l'invio di dati.


    Ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    285
    si uso TCP ...
    anche io ho pensato di utilizzare due thread ma non so come fare o meglio , non so quando richiamare il thread...io vorrei che mentre l'utente non digita un messaggio , vengano sempre letti i nuovi messaggi provenienti dal server . L'invio di un nuovo messaggio deve potere essere fatto in qualsiasi istante...come tutte le normali chat . Se usassi i normali metodi di I/O , avrei una sequenza ascolto-invio-ascolto-invio.....se mi trovo nella fase di "invio" , non posso leggere nuovi messaggi funché non invio qualcosa!

  6. #6
    Una volta inizializzata la classe principale del programma, crea un nuovo thread in cui metti il server in ascolto.

    Qui ci sono spiegazioni su come creare thread:

    http://www.di.uniba.it/~ig/animazione/thread.htm

    http://www.exampledepot.com/egs/java...sicThread.html


    Ciao

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    285
    stiamo parlando lato client...come realizzare l'IO asincrono ... quindi c'è un thread che legge sempre ( magari con un ciclo infinito ) lo stream proveniente dal server e quello che invia ? non so come organizzare le cose

  8. #8
    Originariamente inviato da lionell88
    stiamo parlando lato client...come realizzare l'IO asincrono ... quindi c'è un thread che legge sempre ( magari con un ciclo infinito ) lo stream proveniente dal server e quello che invia ?
    Perfetto..è proprio così.

    Se usi Netbeans come IDE, puoi guardare l'esempio chiamato "NetworkDemo" (anche se è JME), così potrai vedere come si inizializzano i 2 thread.


    Ciao

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    285
    programmi in J2ME ? sono molte le differenze con J2SE ? se non sono molte faccio un client per JME ed uno per JSE !!

  10. #10
    Originariamente inviato da lionell88
    programmi in J2ME ? sono molte le differenze con J2SE ? se non sono molte faccio un client per JME ed uno per JSE !!
    Si..si possono creare da piccole applicazioni a programmi più complessi per esempio per l'invio/ricezione di SMS.
    Le differenze non sono molte, ovviamente per iniziare devi prendere "confidenza" con termini come "midlet", "CLDC", "MIDP": se sei interessato e curioso ti consiglio di provare; ovviamente le applicazioni JME non permettono la gestione a basso livello del dispositivo mobile.


    Ciao

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 © 2025 vBulletin Solutions, Inc. All rights reserved.