Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Utilizzo del Winsock, controllare lo stato della connessione.
Forum - Visual Basic 6 - Utilizzo del Winsock, controllare lo stato della connessione.

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
hemmaus (Normal User)
Pro


Messaggi: 96
Iscritto: 15/07/2009

Segnala al moderatore
Postato alle 16:54
Venerdì, 31/07/2009
Visto che non amo molto i timer volevo domandare, esiste una sub del tipo:

Private Sub winsock1_change()
if winsock1.state <>7 then 'connessione non attiva

in modo da intercettare lo stato della connessione con il winsock server ?

Grazie.


PM Quote
Avatar
Overflow (Normal User)
Expert


Messaggi: 334
Iscritto: 11/01/2008

Segnala al moderatore
Postato alle 17:08
Venerdì, 31/07/2009
adesso non ricordo bene, ma credo ci sia l'evento close:

Codice sorgente - presumibilmente VB.NET

  1. Private Sub Winsock1_Close()
  2. msgbox "la connessione è chiusa"
  3. End Sub


PM Quote
Avatar
hemmaus (Normal User)
Pro


Messaggi: 96
Iscritto: 15/07/2009

Segnala al moderatore
Postato alle 17:37
Venerdì, 31/07/2009
Non mi sono spiegato bene.

Ho la necessità di intercettare lo stato della connessione senza che il controllo passi per un Timer, non chiudere la connessione.:blush:

PM Quote
Avatar
Overflow (Normal User)
Expert


Messaggi: 334
Iscritto: 11/01/2008

Segnala al moderatore
Postato alle 18:32
Venerdì, 31/07/2009
intercettare che vuol dire??
poi io ti ho parlato di evento, winsock tra i suoi eventi ne ha due in particolare connect e close: il primo viene chiamato quando avviene la connessione, il secondo evento invece quando viene chiusa la connessione.

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 21:14
Venerdì, 31/07/2009
Non ci sono eventi che ti diano questa informazione e questo perche' non ha senso conoscerla continuamente.

Lo stato del winsock deve essere esaminato quando serve ovvero durante quelle fasi per cui esistono gli eventi disponibili con il winsock.

PM Quote
Avatar
hemmaus (Normal User)
Pro


Messaggi: 96
Iscritto: 15/07/2009

Segnala al moderatore
Postato alle 10:02
Sabato, 01/08/2009
Testo quotato

Postato originariamente da theprogrammer:

Non ci sono eventi che ti diano questa informazione e questo perche' non ha senso conoscerla continuamente.




Ok! Aiutatemi a risolvere il problema:

Attualmente:
Il programma client(winsock) si collega al server(winsock) il quale genera una chiave e risponde correttamente, il client autentica la chiave e la connessione è stabile.

Il server(winsock) viene chiuso, per qualsiasi motivo, il client come fa a ricollegarsi?
Qui ho inserito un timer che si accorge dello stato " winsock.state<>7 " e ripete la connessione.

Il problema sarebbe facilmente aggirabile se fosse il client ad essere chiamato dal server. Ma questo non si può fare. La connessione è aperta dal client al server e non posso fare diversamente.

Il timer funge bene, ma concettualmente non mi piace. Cosa ne pensate ?

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 12:16
Sabato, 01/08/2009
Quando il computer remoto chiude la connessione, dovrebbe scattare l'evento Close nel client ...

PM Quote
Avatar
muteblaster (Member)
Pro


Messaggi: 87
Iscritto: 16/07/2009

Segnala al moderatore
Postato alle 10:46
Domenica, 02/08/2009
nemmeno a me' i timer una volta piacevano, poi pero' ne ho capito la loro importanza , a volte possono causare dei problemi ma se si sa' usare bene si capisce che sono indispensabili.....( chiudiamo la parentei :yup: ).....

in teoria per fare quello che vuoi tu sarebbe necessario un timer che all'evenuta nuova connessione si disabiliti......pero' in alternativa si potrebbe usare ( non e' una buona soluzione ) in maniera improrpia un delay......cioe' una specie di ritardo.....
questo e' quello ch uso io ( solo n caso strettamente necessario )
Codice sorgente - presumibilmente VB.NET

  1. Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
  2.  
  3.  Sub Pausa(ByVal interval As Double)
  4.    Dim Current As Double
  5.  
  6.    Current = Timer
  7.    Do While Timer - Current < interval
  8.    Sleep 15
  9.    DoEvents
  10.    Loop
  11.  End Sub



si usa
pausa 1 e ritarda di un secondo

tu puoi creare un escamotage che in maniera ciclica ti ripeta la pausa......
come puoi vedere nel codice pero' e' necessario usare un dispendioso doevents.......

PM Quote
Avatar
hemmaus (Normal User)
Pro


Messaggi: 96
Iscritto: 15/07/2009

Segnala al moderatore
Postato alle 11:04
Domenica, 02/08/2009
Testo quotato

Postato originariamente da theprogrammer:

Quando il computer remoto chiude la connessione, dovrebbe scattare l'evento Close nel client ...



Come al solito avevi ragione!

Ecco l'evento:
Codice sorgente - presumibilmente VB.NET

  1. Private Sub winsock_Close()
  2. winsock.Close
  3. MsgBox ("Intercettata chiusura")
  4. End Sub



Grazie!:k:

Ultima modifica effettuata da hemmaus il 02/08/2009 alle 11:04
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo