26/08/09 4:15
muteblaster
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'?.......
aaa
26/08/09 9:35
GrG
non conosco bene il protocollo udp... comunque penso che dovresti terminare la connessione e farlo riconnettere, no?
aaa
26/08/09 12:55
muteblaster
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
aaa
26/08/09 14:56
GrG
eh... forse devi dargli del tempo per fargli chiudere il winsock...
devi controllare lo stato del winsock e quando è chiuso allora usi bind...
aaa
27/08/09 18:16
muteblaster
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 ).....
Public Declare Function InternetGetConnectedState Lib "wininet" (lpdwFlags As Long, ByVal dwReserved As Long) As Boolean
dim connessione as boolean
result = InternetGetConnectedState(flags, 0)
If result Then
If connessione = True Then
ws(0).Close
ws(0).Bind 4000
connessione = False
End If
Else
If Not connessione Then
connessione = True
End If
ws(0).Close
For i = ws.LBound To ws.UBound
If Not ws(i).RemoteHost = "0" Then
ws(i).RemoteHost = "0"
End If
Next i
lst(4).ListItems.Clear
Shape3.Width = 15
End If
Ultima modifica effettuata da muteblaster 27/08/09 18:22
aaa
27/08/09 18:37
GrG
sono felice che tu abbia risolto ma per sapere lo stato del winsock bastava winsock1.status :P
aaa
30/08/09 12:41
GrG
Specifica la porta locale e l'IP locale da utilizzare...
aaa