Visualizzazione dei risultati da 1 a 9 su 9

Discussione: [Socket] Lato Server

  1. #1

    [Socket] Lato Server

    Salve,

    ho scritto un'applicazione client/server implementando un protocollo proprietario nel quale ho incluso un messaggio mediante cui il client avvisa il server che ha chiuso l'applicazione e quindi il server toglie il client dalla "lista dei connessi", in quanto secondo il messaggio risulta essersi disconnesso!

    Però mi è sorto un dubbio: se il processo client viene interroto (dal pannello Gestione Attività di Windows, oppure per black out, o altri eventi che interrompono l'esecuzione dell'applicazione lato client) il server non può ricevere quel messaggio e quindi al server non giunge il messaggio di disconnessione del client (localmente interroto) e continua a vederlo come un client normalmente connesso!

    C'è un modo in java per controllare lato server lo stato di una client socket? Se non c'è un modo avete qualche suggerimento per ovviare a questo non indifferente problema?

  2. #2
    Mi sembra che tu faccia del lavoro inutile.

    fai a livello application quello che già si fa a livello transport,
    a meno che tu non stia usando i DatagramSocket.
    infatti non capisco la lista dei connessi altrimenti a che ti server, avresti una lista di Sockets restituiti da accept.

    cmq metodo isClosed() della classe Socket forse ti puo servire

  3. #3
    Già provato e non funziona! Cmq si la lista è chiaramente composta da socket accettate dal server!

  4. #4
    Originariamente inviato da Mr.Bloom
    infatti non capisco la lista dei connessi altrimenti a che ti server
    mi sa che devo fare una pausa eh

  5. #5
    e questa ?

    isInputShutdown()

  6. #6
    Originariamente inviato da Mr.Bloom
    e questa ?

    isInputShutdown()
    Nemmeno.

  7. #7
    ultimo tentativo poi mi arrendo

    quando chiami la funzione per ricevere i i dati ti dovrebbe sollevare una IOException() o affini

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

    Re: [Socket] Lato Server

    Originariamente inviato da VincenzoTheBest
    C'è un modo in java per controllare lato server lo stato di una client socket?
    Se il server è in una read sul socket connesso al client e il client si disconnette (per qualunque motivo), da quella read si esce con una eccezione (SocketException).

    Leggi: Socket.getInputStream()
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Benissimo andbin!
    Mi ero dimenticato di chiamare il printStackTrace() nel catch e quindi non riuscivo a capire se l'eccezione venisse lanciata o meno!

    Cmq nel protocollo ho incluso messaggi per gestire la disconnessione "volontaria" (es. click sull'icona close del frame) del client proprio per non utilizzare ogni volta il catch all'interno del thread!

    Però in casi diversi ed estremi bisogna utilizzare il catch!

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.