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

    TCP Socket verificare stato connessione

    Allora io ho un client che si connette e disconnette automaticamente ad un server se questo è online o offline. In certi casi però utilizzando il metodo Socket.connected per vedere se il client è connesso al server mi ritorna che il client è connesso mentre il realtà il server è spento. Inviando dei dati però poi il socket capisce di non essere connesso e con Socket.connected mi ritorna falso. Come posso fare per verificare se è connesso al server circa ogni 1-2 secondi senza continuare ad inviare dati??

    Ecco una parte del codice:

    *Per verificare se è connesso
    codice:
    If Client.Connected = True Then 
    ToolStripStatusLabel1.Text = "Connected..." 
    ToolStripProgressBar1.Value = 100 
    Else 
    ToolStripStatusLabel1.Text = "Unconnected..." 
    ToolStripProgressBar1.Value = 0 
    TreeView1.Nodes.Clear() 
    If ConnectTCPWork.IsBusy = False Then 
    ConnectTCPWork.RunWorkerAsync() 
    End If 
    End If
    *Per ricevere i dati
    codice:
    If Client.Available > 0 Then
     Dim t(Client.Available - 1) As Byte 
    Data.Read(t, 0, t.Length) 
    Dim testo As String = Encoding.UTF7.GetString(t) 
    MSGControll(testo) 
    End If

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Da http://msdn.microsoft.com/it-it/libr...connected.aspx

    La proprietà Connected ottiene lo stato di connessione del socket Client nel corso dell'operazione di I/O più recente. Quando restituisce false, indica che il socket Client non si era mai connesso o non lo è più.
    Poiché la proprietà Connected indica solo lo stato della connessione successivo all'ultima operazione eseguita, è consigliabile tentare di inviare o ricevere un messaggio per verificare lo stato corrente. Se l'invio del messaggio non riesce, questa proprietà non restituisce più true. Questo comportamento è previsto dalla progettazione. Non è possibile verificare in modo affidabile lo stato della connessione perché, nel periodo di tempo trascorso tra la verifica e l'invio/ricezione, la connessione potrebbe essere andata persa. A livello di codice, il socket dovrebbe essere connesso e le trasmissioni non riuscite dovrebbero essere gestite normalmente.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    10
    Quindi devo per forza inviare o cercare di ricevere dati per verificare se è connesso?? Un pò scomodo XD perchè inviando anche una semplice stringa ogni 1-2 secondi posso comprmettere altre operazioni del socket. Per esempio avevo gia provato a inviare ogni 2 secondi la stringa "i" , ma quando poi provavo a scrivere al server, per esempio "ciao" nel server mi ritornava "ciaoi" con la "i" finale però il SOcket.connected funzionava bene. Cosa mi consigliate di fare? ci sono degli altri metodi?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    10
    Ragazzi ho risolto in questo modo:
    codice:
    Private Sub GetData() 
    Try If Client.Available > 0 Then 
    Dim t(Client.Available - 1) As Byte 
    Data.Read(t, 0, t.Length) 
    Dim testo As String = Encoding.UTF7.GetString(t) 
    MSGControll(testo) 
    Else 
    Connected = False 
    If Client.Client.Poll(0, SelectMode.SelectRead) = True Then 
    Dim byteArray As Byte() = New Byte(1) {} 
    If (Client.Client.Receive(byteArray, SocketFlags.Peek)) = 0 Then 
    Connected = True 
    End If 
    End If 
    Catch 
    End Try
    In pratica Nella prima parte del codice Se sono disponibili dei dati, cioè sono maggiori di 0 li legge mentre nella seconda parte, se non sono disponibili dei dati verifica di essere connesso cercando di ricevere dei dati aggiornando cosi la funzione Socket.connected. Grazie per la dritta!

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.