Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    100

    [java]problema client server

    ciao ragazzi sto facendo un progetto, vi narro la problematica sperando di essere sintentico
    -ho 1 server
    -n client
    il sistema deva realizzare un jukebox online:
    -il client mette a disposizione una directory con delle canzoni e invia una serie di pacchetti al server cosi strutturati : TITOLO:IDBRANO (la corrispondenza id brano-titolo sarà gestita dal client)
    -il server salva in un suo insieme di canzoni(un array list) per ogni pacchetto ricevuto un oggetto di tipo TRACK cosi strutturato
    -short id
    -Outputstream op (stream che collega client al server)

    il server periodicamente in modo casuale estrae dal suo insieme un oggetto di tipo track
    e invia al client usando lo stream op un pacchetto PLAY:ID
    -il client farà partire la traccia
    MIO PROBLEMA:
    come posso gestire il fatto che il client A crashi, e che quindi il server si deve accorgere che il client A non c è piu e che quindi devo rimuovere dall insieme le sue canzoni?
    df

  2. #2
    Come fanno tutti e forse anche la risposta più banale

    Quando un client si disconnette lo fai disconnettere mandando un ultimo messaggio al server prima della chiusura della connessione.

    Se un client si disconnette ed il server non ha ricevuto il messaggio d'uscita, allora vuol dire che il client non s'è disconnesso nel modo giusto.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    100
    tramite tcp come fa il server a vedere se il client si disconnette?
    df

  4. #4
    Devi mandare un messaggio ogni tot secondi dal server ai client con il formato che vuoi.
    Dopo averlo mandato, fai un loop con read(). Intercettando SocketTimeoutException vedi se il client risponde entro il timeout impostato alla creazione del socket.

  5. #5
    Originariamente inviato da esoni
    tramite tcp come fa il server a vedere se il client si disconnette?
    Gestisci la IOException che verrà sollevata nel momento in cui il client si disconnette.

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    100
    anche dopo che si è verificata la I/O EXCEPTION POSSO ANDARE A FARE Controlli sullo stream ?
    ovvero
    il server ha un array list di tipo track,il tipo track è definito da
    short id
    Outpustream out

    io devo andare a scorrere nell array list e per ogni track appartenente al processo crashato devo eliminare quella track dall insieme del server, come faccio?
    df

  7. #7
    l'IOException è generata dall' OutputStream ma non significa solamente che il client s'è disconnesso.
    Può essere anche un errore di memoria, oppure un errore di scrittura che riprovando a scrivere può funzionare.

    Per vedere se il client s'è disconnesso devi mandargli un messaggio ad intervalli regolari di 10-20 sec così sicuramente se non risponde entro quel tempo è caduto.

  8. #8
    Originariamente inviato da lolide
    l'IOException è generata dall' OutputStream ma non significa solamente che il client s'è disconnesso.
    Si controlla il tipo di eccezione usando l'interfaccia ereditata da Throwable.

    Originariamente inviato da lolide
    Per vedere se il client s'è disconnesso devi mandargli un messaggio ad intervalli regolari di 10-20
    Quindi tutto ciò non è necessario.

  9. #9
    Originariamente inviato da esoni
    anche dopo che si è verificata la I/O EXCEPTION POSSO ANDARE A FARE Controlli sullo stream ?
    ovvero
    il server ha un array list di tipo track,il tipo track è definito da
    short id
    Outpustream out

    io devo andare a scorrere nell array list e per ogni track appartenente al processo crashato devo eliminare quella track dall insieme del server, come faccio?
    Lo fai nel corpo catch che ha catturato l'eccezione dunque sollevata in seguito alla disconnessione del client.

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    100
    senno ho visto l esistenza di un campo KEEPALIVE che puo essere impostato a true p[er verificare la conessione tra client e server, qualcuno sa ocme usarlo ?
    df

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.