Oppure

Loading
27/02/08 8:08
GrG
Ciao!
Ho un problema con un'applicazione client/server:
Questo è il codice del client:
Dim MyIp As String
Public Sub Timer1_Timer()
Dim fk
dk = Inet1.OpenURL("http://www.MioSito/data.txt")
If dk <> "" Then
Dim d() As String
d = Split(dk, ":")
If Hour(Time) = d(0) Then
If Minute(Time) >= d(1) Then
MyIp = d(2)
Winsock1.Connect MyIp, 4400
Dim data As String
data = GetPublicIP
Winsock1.SendData data
End If
End If
End If
End Sub


in data.txt è contenuta una stringa del tipo:
8:30:127.0.0.1

d(0) è = a 8 cioè le ore, d(1) è = a 30 cioè i minuti, d(2) è = a 127.0.0.1 cioè l'ip.

getpublicfunction fa riferimento a una funzione in un modulo, ma non è quello il problema....

Mi dice:

run-time error "40006":
Wrong protocol or connection state for the requested transaction or request

e poi mi evidenzia la riga:
[...]
Winsock1.SendData data
[...]

e nn capisco proprio perchè....

questo è il codice del server:
Private Sub Form_Load()
Winsock1.LocalPort = 4400
Winsock1.Listen
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim data As String
Winsock1.GetData data
Text1.Text = data
End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
Winsock1.Close
Winsock1.Accept requestID
End Sub


Grazie a tutti coloro ke mi aiuteranno(Speriamo:rotfl:.)
Ultima modifica effettuata da GrG 27/02/08 8:09
aaa
27/02/08 10:21
gantonio
Ma trasmetti i dati subito senza aver completato il processo di connessione?

La Connect ci puo' stare un po' per essere completata ...
Ultima modifica effettuata da gantonio 27/02/08 10:22
aaa
27/02/08 10:44
GrG
Lo immaginavo e quindi tra la connect e il sendData ho messo prima una sleep(1000)
poi una Sleep(20000) però non mi funziona lo stesso....
Cosa posso fare allungare il tempo della Sleep(anke se nn credo)?

_____________________________________________________

Ho appena capito qual'è il vero problema, ho modificato il codice così:

Dim MyIp As String
'Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Public Sub Timer1_Timer()
Dim fk
dk = Inet1.OpenURL("http://www.MioSito/data.txt")
If dk <> "" Then
Dim d() As String
d = Split(dk, ":")
If Hour(Time) = d(0) Then
If Minute(Time) >= d(1) Then
MyIp = d(2)
Winsock1.Connect MyIp, 4400
Timer2.Interval = 5000
End If
End If
End If
End Sub

Private Sub Timer2_Timer()
Dim data As String
data = GetPublicIP
[b]Winsock1.SendData data[/b]

End Sub



e ora mi segnala la riga in grassetto cioè winsock1.connect..., quindi è la connessione che proprio non avveniva...
Ma allora come posso fare?
Ultima modifica effettuata da GrG 27/02/08 11:26
aaa
27/02/08 13:30
gantonio
In *tutti* i casi ci vuole tempo (e non risolvi con una sleep ... bisogna processare i messaggi ... ma lasciamo perdere ...) tra la connessione e la Send ...

Adesso dici che ti da' un problema sulla Connect ... e come sempre non dite quale errore (numero e descrizione ...) ... e dire che vi ho detto parecchie volte che, senza descrizione precisa dell'errore, non si puo' neanche tentare di risolvere ...
Ultima modifica effettuata da gantonio 27/02/08 13:37
aaa
27/02/08 16:10
GrG
si scusa8-|, ma andavo di fretta...
l'errore è:

Run-Time error '40020':
Invalid operation at current state
aaa
27/02/08 16:53
gantonio
Probabilmente tenta di fare la Connect piu' di una volta e, la seconda volta che scatta il Timer, da' quell'errore ...
aaa
27/02/08 17:09
GrG
Ora funziona, grazie 100000000000000000000000!!
aaa
28/02/08 13:03
Security-007
we ti dispiacerebbe condividere le sorgenti di questo progetto? mi interesserebbero...
aaa