Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. 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'?.......



anonimity is the best defence
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


anonimity is the best defence
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


anonimity is the best defence
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:


Android User :)

MudStorm OS Source GitHub: https://github.com/Piso94/MudStorm-OS
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