Oppure

Loading
31/07/09 14:54
hemmaus
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.

aaa
31/07/09 15:08
Overflow
adesso non ricordo bene, ma credo ci sia l'evento close:

Private Sub Winsock1_Close()
msgbox "la connessione è chiusa"
End Sub
aaa
31/07/09 15:37
hemmaus
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:
aaa
31/07/09 16:32
Overflow
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.
aaa
31/07/09 19:14
theprogrammer
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.
aaa
01/08/09 8:02
hemmaus
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 ?
aaa
01/08/09 10:16
theprogrammer
Quando il computer remoto chiude la connessione, dovrebbe scattare l'evento Close nel client ...
aaa
02/08/09 8:46
muteblaster
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 )
 Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
 
 Sub Pausa(ByVal interval As Double)
   Dim Current As Double
 
   Current = Timer
   Do While Timer - Current < interval
   Sleep 15
   DoEvents
   Loop
 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.......
aaa