Problem connection à deux client

cs_dectroo Messages postés 30 Date d'inscription samedi 4 mars 2006 Statut Membre Dernière intervention 31 mars 2010 - 26 juin 2006 à 01:39
katsankat Messages postés 571 Date d'inscription vendredi 30 décembre 2005 Statut Membre Dernière intervention 12 juillet 2012 - 28 juin 2006 à 19:55
slt tous le monde,
j'utlise le  winsock pour créer un chat client serveur, maintenant le problem reside dans le serveur
je peut  pas faire plus qu'une connection au client .. j'utilise 2 winsock , voilà le code source:

pour le prmier winsock:
Private Sub Winsock2_ConnectionRequest(Index As Integer, ByVal requestID As Long)
On Error Resume Next
winsock1(Index).Close 'Ferme le serveur et
winsock1(Index).Accept requestID 'accepte la connection ayant pour ID requestID


Index = Index + 1
Load winsock1(Index)
winsock1(Index).LocalPort = 200
winsock1(Index).Listen

end sub
et pour le 2 eme winsock:

Private Sub Winsock2_ConnectionRequest(Index As Integer, ByVal requestID As Long)
Winsock2(Index).Close
Winsock2(Index).Accept requestID




Index = Index + 1
Load Winsock2(Index)
Winsock2(Index).LocalPort = 208
Winsock2(Index).Listen
end sub

SVP aide moi  a résoudre ce problem

7 réponses

JB76000 Messages postés 135 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 14 février 2013
26 juin 2006 à 12:17
N'utilises pas d'index pour ton client.

Mets en place un logiciel serveur et un client si ce n'est déjà fait.

Crée l'EXE du client et lance le plusieurs fois pour voir si ça marche.

Vérifie que tu as bien déclaré INDEX afin que sa valeur soit conservée.

Jer
0
JB76000 Messages postés 135 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 14 février 2013
26 juin 2006 à 12:18
Et pour le client, mets ton code de connection dans FORM_LOAD

Jer
0
cs_dectroo Messages postés 30 Date d'inscription samedi 4 mars 2006 Statut Membre Dernière intervention 31 mars 2010
26 juin 2006 à 15:47
mais le code que je vient de le donné c pour le serveur seulemnt ,
j'utilise 2 winsock pour le client et 2 pour le serveur.
la premier connection se fait mé la 2 eme ne se fait po , qu'est ce que je doit faire
pour assurer 2 connection   client-serveur-client
merci d'aventage
@+++
0
JB76000 Messages postés 135 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 14 février 2013
26 juin 2006 à 16:12
2 winsock sur ton serveur mais 1 seul sur ton client

le serveur
----------

Private Sub Form_Load()

Winsock1(0).LocalPort = 200
Winsock1(0).Listen
Winsock.Connect Winsock1(0).LocalIP, 200


End Sub

Private Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long)

n = n + 1
Load Winsock1(n)
Winsock1(n).Accept requestID


End Sub

le client
--------
Private Sub Timer1_Timer()

Select Case Winsock.State


Case 0
Label8.Caption = "Déconnecté"
Case 1
Label8.Caption = "Port Ouvert"
Case 2
Label8.Caption = "À l'écoute"
Case 3
Label8.Caption = "Connexion en attente"
Case 4
Label8.Caption = "Recherche du Serveur...Patienter..."
Case 5
Label8.Caption = "PC Serveur trouvé...Connexion..."
Case 6
Label8.Caption = "En cours de connexion...Patienter..."
Case 7
Label8.Caption = "Connecté au Serveur"
Case 8
Label8.Caption = "Fermeture de la connexion par le Serveur"
Case 9
Label8.Caption = "Connexion Impossible avec le Serveur "


End Select


'Si l'étatdu winsock est différent de 7 (connecté) alors on bloque la fenêtre afin de ne pas envoyer de requêtes
'Comme ça, pas de message d'erreur
If Winsock.State <> 7 Then
    ToggleButton1(0).Value = False
    ToggleButton1(1).Value = False
    ToggleButton1(2).Value = False
    ToggleButton1(3).Value = False
    ToggleButton1(4).Value = False
    tout_disabled (0)
Else
    tout_disabled (1)
    If admin = 0 Then
        Command2.Enabled = False
        Command3.Enabled = False
    End If
End If


'fermer la connection en cas d'erreur ou de cloture par le serveurIf Winsock.State 8 Or Winsock.State 9 Then Winsock.Close
'ouvrir la connection
If Winsock.State = 0 Then Winsock.Connect IP, 8765
'détection du passage de n'importe quel état à celui de connecté et engagement du bouton newsIf Winsock.State 7 And der_etat <> 7 Then ToggleButton1(0).Value True
der_etat = Winsock.State


End Sub

C'est mon code, il fonctionne parfaitement. A toi de l'adapter.

Si ça ne suffit pas, il y a des tas de sources sur le site, à toi de t'en inspirer.
Jer
0

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

Posez votre question
cs_dectroo Messages postés 30 Date d'inscription samedi 4 mars 2006 Statut Membre Dernière intervention 31 mars 2010
26 juin 2006 à 16:41
sa marche po ton code pour l'instant  je vais reprogrammer tout le serveur ..
bon moi j'utlise la meme methode que toi , chez mon programme  le serveur entent tous les connection mé pour toi entend puis se connecte ..
de tt façon merci
0
JB76000 Messages postés 135 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 14 février 2013
26 juin 2006 à 17:40
Mon adresse pour un coup de main
jb76240@hotmail.fr

Jer
0
katsankat Messages postés 571 Date d'inscription vendredi 30 décembre 2005 Statut Membre Dernière intervention 12 juillet 2012 3
28 juin 2006 à 19:55
Dectroo dans ton code,
Load Winsock2(Index)

Winsock2(Index).LocalPort = 208

Winsock2(Index).Listen


1) Ne pas spécifier le LocalPort. Le serveur lui attribuera un port dynamique sans intervention.

2) Et ne pas demander au nouveau socket client d' écouter... Il faut l'
accepter avec Accept(). En effet à ce stade le socket 0 est toujours à
l' écoute et doit le rester c'est son job.


Le code de JB76000 illustre ceci.
0
Rejoignez-nous