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 - Problemi client/server
Forum - Visual Basic 6 - Problemi client/server

Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 9:08
Mercoledì, 27/02/2008
Ciao!
Ho un problema con un'applicazione client/server:
Questo è il codice del client:
Codice sorgente - presumibilmente VB.NET

  1. Dim MyIp As String
  2. Public Sub Timer1_Timer()
  3. Dim fk
  4. dk = Inet1.OpenURL("http://www.MioSito/data.txt")
  5. If dk <> "" Then
  6. Dim d() As String
  7. d = Split(dk, ":")
  8. If Hour(Time) = d(0) Then
  9. If Minute(Time) >= d(1) Then
  10. MyIp = d(2)
  11. Winsock1.Connect MyIp, 4400
  12. Dim data As String
  13. data = GetPublicIP
  14. Winsock1.SendData data
  15. End If
  16. End If
  17. End If
  18. 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:
Codice sorgente - presumibilmente VB.NET

  1. Private Sub Form_Load()
  2. Winsock1.LocalPort = 4400
  3. Winsock1.Listen
  4. End Sub
  5.  
  6. Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
  7. Dim data As String
  8. Winsock1.GetData data
  9. Text1.Text = data
  10. End Sub
  11.  
  12. Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
  13. Winsock1.Close
  14. Winsock1.Accept requestID
  15. End Sub



Grazie a tutti coloro ke mi aiuteranno(Speriamo:rotfl:.)

Ultima modifica effettuata da GrG il 27/02/2008 alle 9:09
PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 11:21
Mercoledì, 27/02/2008
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 il 27/02/2008 alle 11:22
PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 11:44
Mercoledì, 27/02/2008
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ì:

Codice sorgente - presumibilmente VB.NET

  1. Dim MyIp As String
  2. 'Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
  3.  
  4. Public Sub Timer1_Timer()
  5. Dim fk
  6. dk = Inet1.OpenURL("http://www.MioSito/data.txt")
  7. If dk <> "" Then
  8. Dim d() As String
  9. d = Split(dk, ":")
  10. If Hour(Time) = d(0) Then
  11. If Minute(Time) >= d(1) Then
  12. MyIp = d(2)
  13. Winsock1.Connect MyIp, 4400
  14. Timer2.Interval = 5000
  15. End If
  16. End If
  17. End If
  18. End Sub
  19.  
  20. Private Sub Timer2_Timer()
  21. Dim data As String
  22. data = GetPublicIP
  23. [b]Winsock1.SendData data[/b]
  24.  
  25. 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 il 27/02/2008 alle 12:26
PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 14:30
Mercoledì, 27/02/2008
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 il 27/02/2008 alle 14:37
PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 17:10
Mercoledì, 27/02/2008
si scusa8-|, ma andavo di fretta...
l'errore è:

Run-Time error '40020':
Invalid operation at current state

PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 17:53
Mercoledì, 27/02/2008
Probabilmente tenta di fare la Connect piu' di una volta e, la seconda volta che scatta il Timer, da' quell'errore ...

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 18:09
Mercoledì, 27/02/2008
Ora funziona, grazie 100000000000000000000000!!

PM Quote
Avatar
Security-007 (Ex-Member)
Rookie


Messaggi: 42
Iscritto: 12/11/2007

Segnala al moderatore
Postato alle 14:03
Giovedì, 28/02/2008
we ti dispiacerebbe condividere le sorgenti di questo progetto? mi interesserebbero...

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 14:59
Giovedì, 28/02/2008
Ok, ci vediamo su msn...

PM Quote