Connessione TCP

di il
8 risposte

Connessione TCP

Buongiorno a tutti,
Avrei un problema;
Ho un software (client) che si collega a un server :

 client = New TcpClient
        Try
            client.Connect(ip, porta)
        Catch sex As System.Net.Sockets.SocketException
        Catch ex As Exception
        End Try
        If client.Connected = True Then
            dati = client.GetStream
            dati = client.GetStream()
            My.Forms.Messaggio.Close()
        End If

la connessione avviene senza problemi, anche la trasmissione di dati ecc.... Il problema si presenta dopo tot. tempo di inutilizzo, il mio client si scollega dal server, ma non riesco a capire il motivo.
Voi avreste qualche idea?

8 Risposte

  • Re: Connessione TCP

    Ma chiami sempre la connect ogni volta? In quale parte si cosice ti accorgi della disconnessione?
  • Re: Connessione TCP

    Grazie oregon della risposta.
    Io la connessione la chiamo all'avvio del programma, oppure dopo tot secondi che il server non risponde a un mio comando, verifico se il client è connesso oppure no al server:
    If client.Connected = false then
    connect
    end if.

    Io mi accorgo che è caduta la connesione tra server e client perche:
    Sul client quando è in attesa di risposta dal server, compare la scritta attendere prego;
    mentre sul server mi da che non è presente nessun client connesso.

    ma cio accade dopo un tot. di inutilizzo, e non capisco come mai
  • Re: Connessione TCP

    Guarda senza codice completo del client e del serve è impossibile risponderti
  • Re: Connessione TCP

    Probabilmente sul server è presente un timeout che chiude la connessione se il cient non dà segni di vita per un tot di tempo, io sui miei programmi su socket faccio così, cioè vado a gestire il "KeepAlive".
    Questo è importante per il server, perchè se mantiene il canale aperto e per qualche motivo la connessione cade, il canale rimane comunque aperto ma il client non riuscirebbe più a ricollegarsi di nuovo.
    Il programma che gestisce il socket sul server lo hai fatto tu ???
  • Re: Connessione TCP

    Scusa la risposta in ritardo, ho scoperto che su alcuni modem ce un time-out per il risparmio, e se una connessione non viene utilizzata per un tot
    di tempo cade, e il server al quale mi collegavo non rimaneva in attesa di una connessione, mentre io gli è la stavo richiedendo.Ho risolto il problema mandando ogni tot. secondi un carattere, cosi da non far cadere mai la connessione.
  • Re: Connessione TCP

    ors ha scritto:


    Scusa la risposta in ritardo, ho scoperto che su alcuni modem ce un time-out per il risparmio, e se una connessione non viene utilizzata per un tot
    di tempo cade, e il server al quale mi collegavo non rimaneva in attesa di una connessione, mentre io gli è la stavo richiedendo.Ho risolto il problema mandando ogni tot. secondi un carattere, cosi da non far cadere mai la connessione.
    Una domanda: è così importante per il tuo software mantenere aperta la connessione?

    Se non c'è bisogno di inviare/ricevere dati (significativi) per un lungo periodo, io lo vedo come uno spreco.

    Sarà che mi sono abituato allo scenario dei dispositivi mobili e ai servizi REST, dove la connessione permamente è un lusso che non ci si può permettere e occorre tenere conto che la "caduta" della connessione non è una eventualità, ma una certezza.

    Da qui il dubbio: non sarebbe sufficiente che tu facessi di nuovo la connessione al server nel momento in cui devi inviare o ricevere i dati?

    Il software sarebbe rispettoso anche delle politiche di risparmio che hai menzionato...
  • Re: Connessione TCP

    Ciao alka,
    Sono pienamente daccordo con te, il problema e che io sono il client, mentre il server non è gestito da me, io faccio gia come dici tu, il problema e che quando mi disconnetto, il server non si rimette in ascolto, e nonostante io mi sia disconnesso, il server rimane occupato, e non si mette nella stato di attesa connessione. Di conseguenza, quando io vado a richiedere la connessione, il server non mi "accetta" siccome risulta ancora occupato.
  • Re: Connessione TCP

    ors ha scritto:


    Ciao alka,
    Sono pienamente daccordo con te, il problema e che io sono il client, mentre il server non è gestito da me, io faccio gia come dici tu, il problema e che quando mi disconnetto, il server non si rimette in ascolto, e nonostante io mi sia disconnesso, il server rimane occupato, e non si mette nella stato di attesa connessione. Di conseguenza, quando io vado a richiedere la connessione, il server non mi "accetta" siccome risulta ancora occupato.
    Ah ok, in questo caso concordo che il tuo espediente sia l'unico modo di riuscire a fruire delle funzionalità del server, che evidentemente non è stato fatto proprio benissimo.

    Ciao!
Devi accedere o registrarti per scrivere nel forum
8 risposte