VBscript Winsock (je vais péter un cable)

Guillamue06 Messages postés 157 Date d'inscription dimanche 18 avril 2004 Statut Membre Dernière intervention 11 juillet 2022 - 13 août 2011 à 22:46
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 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
            
                

2 réponses

4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
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.
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
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
0
Rejoignez-nous