cs_dectroo
Messages postés30Date d'inscriptionsamedi 4 mars 2006StatutMembreDernière intervention31 mars 2010
-
26 juin 2006 à 01:39
katsankat
Messages postés571Date d'inscriptionvendredi 30 décembre 2005StatutMembreDernière intervention12 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
cs_dectroo
Messages postés30Date d'inscriptionsamedi 4 mars 2006StatutMembreDernière intervention31 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
@+++
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_dectroo
Messages postés30Date d'inscriptionsamedi 4 mars 2006StatutMembreDernière intervention31 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
katsankat
Messages postés571Date d'inscriptionvendredi 30 décembre 2005StatutMembreDernière intervention12 juillet 20123 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.