"Connexion fermée par serveur"... [Résolu]

Signaler
Messages postés
45
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
29 octobre 2009
-
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
-
Bonjour,
Je suis sur un petit programme pour tester les capacités de Winsock. J'ai regardé des exemples, mais je n'arrive pas à trouver pourquoi mon code ne fonctionne pas...

Est-ce que quelqu'un pourrait me dire pourquoi il ne fonctionne pas ?

Principe du programme :

Un client se connecte au serveur. Dès la connexion, le serveur compare si l'IP du Client fait parti de la liste des adresses IP :
Si oui, le serveur renvoit "0", sinon il renvoit "1".

Problème, la connexion s'établie mais le serveur n'envoie jamais le caractère...

Merci d'avance !

Ps : Le fichier "ServerList.txt" est inclus dans le RAR.

5 réponses

Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
12
Mets un DoEvents juste après DeniedAccess: et GrantAccess:
Mais je ne te conseille pas d'utiliser goto dans ton code.
Voilà :

Option Explicit
Public I As Integer

Private Sub Form_Load()
'Init Vars
nB = 0
I = -1
Dim objUrl As New cURL
'Opening File
Open "ServerList.txt" For Input As #1
'Loop
Do
 I = I + 1
 Input #1, Temp
 objUrl.DomaineName = Temp
 ServeList.AddItem (objUrl.ip)
Loop Until EOF(1) 'Until the End Of File
'Clear All
Set objUrl = Nothing
Close #1
'Let's listen !
Sock(0).Listen
End Sub<hr />
Private Sub ServerDisable_Click()
'Log messages...
Select Case ServerDisable.Value
 Case 1: AddInLog ("Serveur Désactivé !")
 Case 0: AddInLog ("Serveur Activé !")
End Select
End Sub<hr />
Private Sub Sock_ConnectionRequest(Index As Integer, ByVal requestID As Long)
'Init New Socket
nB = nB + 1
Load Sock(nB)
Sock(nB).Accept (requestID)
Call AddInLog("Requête de " & Sock(nB).RemoteHostIP)
If ServerDisable Then
 Sock(nB).SendData ("-2")
 Unload Sock(nB)
End If
'Check if asker has an autorised IP
For J = 0 To I
 ServeList.ListIndex = J
 If ServeList.Text = Sock(nB).RemoteHostIP Then
  DoEvents
  Call AddInLog("Accepté ! " & Sock(nB).RemoteHostIP)
  Sock(nB).SendData ("0")
  Exit For
 End If
Next
DoEvents
Call AddInLog("Refusé ! " & Sock(nB).RemoteHostIP)
Sock(nB).SendData ("1")
End Sub<hr />
Function AddInLog(Text As String)
Log.AddItem Text, 0
End Function<hr />
Private Sub Sock_SendComplete(Index As Integer)
Unload Sock(Index)
End Sub<hr />, ----
[code.aspx?ID=41455 Colorisation syntaxique par Renfield]
_______________________________________________________________________
VB.NETis good ...VB6is better
Messages postés
45
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
29 octobre 2009

Whoops... Apparament je n'ai pas le droit de poser ces intrstructions à la suite.
C'est bon j'ai résolu mon problème :)
Messages postés
45
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
29 octobre 2009

Merci ! Ca fonctionne ! :D
Messages postés
45
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
29 octobre 2009

Décidément... Quand ca veut pas ca veut pas...

Pourquoi quand j'utilise le code suivant :
<hr size="2" width="100%" />    Sock.Connect
    Sock.SendData ("GetAutorisation")
   
    DoEvents
   
    Sock.GetData Data, vbString
    MsgBox (Data)
<hr size="2" width="100%" />Il bloque à le deuxième ligne... ?
Il me dit : "Wrong protocol or connection state for the requested transaction or request." > J'utilise pourtant TCP des deux cotés...

(A titre d'info, ce winsock se connecte au serveur que j'ai donné plus haut ;))

Merci d'avance ! :)
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
12
Exact. La connexion se fait de façon asynchrone (le code n'attend pas qu'elle soit établie), d'où l'utilisation de DoEvents
_______________________________________________________________________
VB.NETis good ...VB6is better