VBscript Winsock (je vais péter un cable)

Messages postés
158
Date d'inscription
dimanche 18 avril 2004
Statut
Membre
Dernière intervention
25 juillet 2018
- - Dernière réponse : cs_ghuysmans99
Messages postés
3983
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
            
Afficher la suite 

2 réponses

Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
0
Merci
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.
Commenter la réponse de 4u4me4us
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
11
0
Merci
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
Commenter la réponse de cs_ghuysmans99