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 - reinizializzare winsock
Forum - Visual Basic 6 - reinizializzare winsock

Avatar
muteblaster (Member)
Pro


Messaggi: 87
Iscritto: 16/07/2009

Segnala al moderatore
Postato alle 6:15
Mercoledì, 26/08/2009
ho un winsock su protocollo udp.....quando la connessione ad internet viene meno e poi si ripristina il winsock in bind non riinizia a riceve i dati nuovamente e sono costretto a riavviare il programma perche' torni a funzionare.......
mi e' stato detto di reinizializzare il winsock.....
ma come si fa'?.......


PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 11:35
Mercoledì, 26/08/2009
non conosco bene il protocollo udp... comunque penso che dovresti terminare la connessione e farlo riconnettere, no?

PM Quote
Avatar
muteblaster (Member)
Pro


Messaggi: 87
Iscritto: 16/07/2009

Segnala al moderatore
Postato alle 14:55
Mercoledì, 26/08/2009
io faccio

ws(0).close
ws(0).bind 4000

ho provato anche
ws(0).close
unload ws(0)
load ws(0)
ws(0).bind 4000

ma non mi funziona

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 16:56
Mercoledì, 26/08/2009
eh... forse devi dargli del tempo per fargli chiudere il winsock...

devi controllare lo stato del winsock e quando è chiuso allora usi bind...

PM Quote
Avatar
muteblaster (Member)
Pro


Messaggi: 87
Iscritto: 16/07/2009

Segnala al moderatore
Postato alle 20:16
Giovedì, 27/08/2009
ho risolto utile mi sono state le api InternetGetConnectedState

all'interno di un timer uso una variabile booleana che mi determina lo stato della connessione ( se c'e' o non c'e' )e mi fa' attivare la procedura di chiusura del winsock ed il suo riinizializzo.....

posto il codice ( messo all'interno di un timer con intervallo relativamente corto ).....

  
Codice sorgente - presumibilmente VB.NET

  1. Public Declare Function InternetGetConnectedState Lib "wininet" (lpdwFlags As Long, ByVal dwReserved As Long) As Boolean
  2.  
  3.  dim connessione as boolean
  4.  
  5.  result = InternetGetConnectedState(flags, 0)
  6.     If result Then        
  7.         If connessione = True Then
  8.            ws(0).Close
  9.            ws(0).Bind 4000
  10.            connessione = False
  11.         End If
  12.     Else        
  13.         If Not connessione Then
  14.            connessione = True
  15.         End If
  16.         ws(0).Close
  17.         For i = ws.LBound To ws.UBound
  18.             If Not ws(i).RemoteHost = "0" Then
  19.                ws(i).RemoteHost = "0"
  20.             End If
  21.         Next i
  22.         lst(4).ListItems.Clear
  23.         Shape3.Width = 15
  24.     End If


Ultima modifica effettuata da muteblaster il 27/08/2009 alle 20:22
PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 20:37
Giovedì, 27/08/2009
sono felice che tu abbia risolto ma per sapere lo stato del winsock bastava winsock1.status :P

PM Quote
Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 12:25
Sabato, 29/08/2009
Scusate se mi intrometto8-| ma la riga che dice Winsock1(0).bind 4000
Cosa significa?? :k:

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 14:41
Domenica, 30/08/2009
Specifica la porta locale e l'IP locale da utilizzare...

PM Quote