"Connexion fermée par serveur"...

Résolu
Nowid50 Messages postés 45 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 29 octobre 2009 - 18 mai 2008 à 09:26
cs_ghuysmans99 Messages postés 3983 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 - 18 mai 2008 à 21:16
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

cs_ghuysmans99 Messages postés 3983 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
18 mai 2008 à 09:55
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
3
Nowid50 Messages postés 45 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 29 octobre 2009
18 mai 2008 à 14:00
Whoops... Apparament je n'ai pas le droit de poser ces intrstructions à la suite.
C'est bon j'ai résolu mon problème :)
3
Nowid50 Messages postés 45 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 29 octobre 2009
18 mai 2008 à 10:09
Merci ! Ca fonctionne ! :D
0
Nowid50 Messages postés 45 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 29 octobre 2009
18 mai 2008 à 11:48
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 ! :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_ghuysmans99 Messages postés 3983 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
18 mai 2008 à 21:16
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
0