Guillamue06
Messages postés157Date d'inscriptiondimanche 18 avril 2004StatutMembreDernière intervention11 juillet 2022
-
13 août 2011 à 22:46
cs_ghuysmans99
Messages postés3982Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 2013
-
15 août 2011 à 13:16
Bonjour je souhaite créer un mini tchat en VBScript en utilisant Winsock.
J'ai un problème avec les stats de winsock (sa fait trés longtemp que je n'est pas touché a VB)
En effet, la partie client fonctionne bien (avec un serveur python)
Par contre la partie serveur, le stat de winsock reste toujours à deux et le client lui passe directement à 8 ??? (sauf avec le serveur python)
Je pensai que j'en avais pour 10 min sa fait 2 heure que je rame TT :
' Création de la socket
Set Sck = CreateObject("MSWinsock.Winsock")
Data = InputBox("[IP] [Message] :","NetMessage")
' Si l'utilisteur à inscrit quelque chose on tente une connexion
If Data <> "" Then
Data = Split(Data, " ")
Connexion()
Else
Serveur() ' Sinon on lance le serveur
end If
'___________________________________________________________________
Sub Connexion()
Sck.RemoteHost = Data(0)
Sck.RemotePort = 23
Sck.Connect
While (Sck.state <> 7) ' Attend que le socket sois connecté
WScript.sleep(100)
If Sck.state = 5 then
msgbox"en cours"
end if
If Sck.state = 9 then
MsgBox "Le serveur " + Data(0) + " est introuvable...",, "NetMessage"
WScript.quit
End If
Wend
Sck.SendData(Data(1))
End Sub
'___________________________________________________________________
Sub Serveur()
While 1
Sck.LocalPort = 23
Sck.Listen
While (Sck.state = 2)
WScript.sleep(100)
Wend
Sck.Accept(requestID)
While (Sck.state <> 8)
Sck.GetData Recu
Msgbox(Recu),, "NetMessage" + (Sck.RemoteHostIP)
WScript.sleep(100)
Wend
Wend
End Sub
4u4me4us
Messages postés780Date d'inscriptionlundi 22 janvier 2007StatutMembreDernière intervention30 octobre 20133 15 août 2011 à 10:21
Je pense a deux choses.
1) Port 23. Moi je met tjs des num de port à 4 chiffres
2) le Listen de la sub serveur je le plaserrais aussi dans la boucle while après le sleep.
Mais dans un point de vu global, perso moi je joue plus avec les événenement Winsok. Ton code je le passerrais comme cela :
Private Sub Form_Load()
Sck.LocalPort = 23
Sck.Listen
end sub
private sub Sck_ConnectionRequest ()
Sck.Accept(requestID)
end sub
Sub Sck_Dataarrival ()
Sck.GetData Recu
Msgbox(Recu),, "NetMessage" + (Sck.RemoteHostIP)
WScript.sleep(100)
End Sub
J'ai taper de tête donc y a des faute de syntaxe
Voila comment je retravaillerait ton code mais cela dépond bien sur de ce que tu souhaite fair.
cs_ghuysmans99
Messages postés3982Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 15 août 2011 à 13:16
Il dév en VBS donc il ne peut pas se servir des événements comme ça. Tu pourrais peut-être t'inspirer de ça(mal codé, mais si ça fonctionne, y'a une raison)
VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question