Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    102

    [PACCHETTI SOCKET] Prevedere i pacchetti inviati a servizio spento (nessuna porta in ascolto)

    Ciao ragazzi, spiego meglio il mio problema. In pratica ho un'app Client/Server, dove i vari client inviano un array di double al server. Tramite un tasto on/off, rendo attivo o meno il servizio server. Funziona tutto correttamente. Però, se spengo il server e accendo il client, questi array vengono comunque inviati. E, se accendo il server, mi arrivano tutti all'improvviso, come se stazionassero sul router o da un'altra parte e attendessero l'apertura della porta per via del ServerSocket per arrivare tutti insieme.
    Adesso, per la struttura del programma, non posso permettere che ciò avvenga, vorrei che i pacchetti inviati mentre c'è il server spento (quindi nessun socket in ascolto su quella determinata porta) venissero eliminati o reindirizzati da qualche altra parte, ma non capisco se ciò è problematica Java, o di sistema operativo, o di router o addirittura di WAN.
    Qualcuno saprebbe spiegarmi da cosa dipende e in caso come risolvere? Grazie

  2. #2
    Ciao
    Puoi postare il pezzo del codice del client in cui mandi il buffer al server? Magari non effettui qualche controllo prima di inviare i dati.
    tutto si può fare, bisogna solo volerlo
    http://italybrain.altervista.org/

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    102
    Quote Originariamente inviata da g.b99pm10 Visualizza il messaggio
    Ciao
    Puoi postare il pezzo del codice del client in cui mandi il buffer al server? Magari non effettui qualche controllo prima di inviare i dati.
    Ecco qui... lo effettuo da un thread

    codice:
    public void run() {
        try {
            socket = new Socket (address, port);
            out = new ObjectOutputStream(socket.getOutputStream());
            out.writeObject(array);
            out.flush();
            out.close();
            socket.close();    
        } catch (ConnectException e){
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    102
    RISOLTO!

    Bisogna:
    - creare un address = new InetSocketAddress("indirizzo IP server", porta);
    - creare un socket = new Socket();
    - fare un socket.connect(address, timeout); con timeout il tempo in millisecondi di quanto volete che i pacchetti attendano risposta dal server.
    Potete scegliere il tempo che volete, dopo il timeout ci sarà un'eccezione di tipo SocketTimeoutException. Gestitela come meglio credete per prevedere il tutto =)

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.