Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di taz50
    Registrato dal
    Nov 2003
    Messaggi
    118

    [c#] Stabilire se tcpclient è connesso

    Ciao a tutti,
    sto impazzendo cercandoil modo per verificare se un tcpclient è relamente connesso... posto il codice client side :

    private void ClientThread()
    {
    Process app = null, app_precedente = null;
    comando_rx = clienttcp.GetStream();

    byte[] buffer = new byte[1024];

    while (clienttcp.Connected == true)
    {
    if (clienttcp.Connected == true)
    {
    if ((clienttcp.Client.Poll(2, SelectMode.SelectRead) == true) )&&
    (clienttcp.Client.Poll(2, SelectMode.SelectWrite) == true) &&
    (clienttcp.Client.Poll(2, SelectMode.SelectError) == false))
    {


    int l_dati_rx = comando_rx.Read(buffer, 0, buffer.Length);

    string string_buffer = Encoding.ASCII.GetString(buffer, 0, l_dati_rx);

    switch (string_buffer)
    {
    case "HOME":
    ........
    .....
    ....


    Se forzo la chiusa della connessione staccando il cavo di rete comunque la proprietà connected ritorna true, ho visto un pò in giro le discussioni sul fatto che connected non ritorna lo stato relae del socket, ora ho provato questo
    if ((clienttcp.Client.Poll(2, SelectMode.SelectRead) == true) )&&
    (clienttcp.Client.Poll(2, SelectMode.SelectWrite) == true) &&
    (clienttcp.Client.Poll(2, SelectMode.SelectError) == false))

    ma nulla da fare
    qualcuno mi può aiutare?
    MEGLIO UN MILIONE OGGI E ..... UNO ANCHE DOMANI.

  2. #2
    Utente di HTML.it L'avatar di taz50
    Registrato dal
    Nov 2003
    Messaggi
    118
    qualche suggerimento?
    MEGLIO UN MILIONE OGGI E ..... UNO ANCHE DOMANI.

  3. #3
    Ciao.
    uso il metodo Pool anche io.
    Ciao

  4. #4
    Utente di HTML.it L'avatar di taz50
    Registrato dal
    Nov 2003
    Messaggi
    118
    mi potresti fare un esempio pratico con qualche spiegazione? Grazie
    MEGLIO UN MILIONE OGGI E ..... UNO ANCHE DOMANI.

  5. #5
    codice:
        if (sock == null){ 
            Label1.Text = "Non Connesso"; 
            return; 
        } 
        try { 
            if (!sock.Poll(100, SelectMode.SelectRead)) { 
                Label1.Text = "Connesso"; 
            } 
            else { 
                Label1.Text = "Non Connesso"; 
                sock = null; 
            } 
        } 
        catch (Exception ex) { 
            Label1.Text = "Non Connesso"; 
            sock = null; 
            VerificaConnessione.Enabled = false; 
        }

  6. #6
    Utente di HTML.it L'avatar di taz50
    Registrato dal
    Nov 2003
    Messaggi
    118
    sto debuggando il controllo della connessione come indicato in precedenza , questo è il loop all'interno del thread del client che accetta stringhe dal server...
    while (true)
    {

    if ((clienttcp.Client.Poll(100, SelectMode.SelectRead) != true))
    {
    int l_dati_rx = comando_rx.Read(buffer, 0, buffer.Length);
    string string_buffer = Encoding.ASCII.GetString(buffer, 0, l_dati_rx);
    }
    else
    {
    comando_rx.Close();
    clienttcp.Close();
    break;
    }
    }


    ..... stacco cavo di rete ma (clienttcp.Client.Poll(100, SelectMode.SelectRead) rimane sempre True e quindi anche se disconnesso cerca di leggere lo stream e genera eccezione
    Qualche aiuto? Grazie
    MEGLIO UN MILIONE OGGI E ..... UNO ANCHE DOMANI.

  7. #7
    Ciao.
    Gestisci l'eccezione per quell'unica volta che fa ancora in tempo e restituire True, nonostante il cavo scollegato e, successivamente, lo troverai sicuramente a False.


    Ad ogni modo, con il codice che mostri, la lettura dei dati, la esegui quando la funzione Pool ti restituisce False. ....


    Ciao

  8. #8
    Utente di HTML.it L'avatar di taz50
    Registrato dal
    Nov 2003
    Messaggi
    118
    hai ragione avevo già modificato la lettura dati su true, ed in effetti debuggando vedo che al secondo loop lo scollegamento fisico viene riconosciuto.
    Grazie
    MEGLIO UN MILIONE OGGI E ..... UNO ANCHE DOMANI.

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.