Possible d'ouvrir Host et Client sur Idem machine?
Octave32
Messages postés18Date d'inscriptionmercredi 15 mars 2006StatutMembreDernière intervention 8 décembre 2008
-
31 oct. 2006 à 04:47
Octave32
Messages postés18Date d'inscriptionmercredi 15 mars 2006StatutMembreDernière intervention 8 décembre 2008
-
3 nov. 2006 à 01:13
Et bien voila, tout se trouve dans le titre. J'essai de faire un beau petit programme, pouvant à la fois Être host et client (Chacun un bouton pour l'activer). J'ouvre donc 2 fois mon programme, l'un executant le bouton pour etre host et l'un celui pour Être client
Mais je reçoit un message d'erreur chaque fois que je tent de connecter mon client.
Ma question est donc:
Est-ce que je peux faire utilisation de WinSock sur la même machine? j'connect à 127.0.0.1, et j'ai aussi essayer mon adresse 192.168 de routeur.
Merci du tip! =)
A voir également:
Possible d'ouvrir Host et Client sur Idem machine?
le cancre
Messages postés292Date d'inscriptionmercredi 25 octobre 2006StatutMembreDernière intervention27 novembre 2009 31 oct. 2006 à 09:15
Est-ce que je peux faire utilisation de WinSock sur la même machine?
oui tu peux serveur : 127.0.0.1<------ no probleme ------> client : 127.0.0.1
serveur : 192.168.1.2<----- no probleme -----> client : 192.168.1.2
montre moi un bout de ton code la partie connexion
le cancre
Messages postés292Date d'inscriptionmercredi 25 octobre 2006StatutMembreDernière intervention27 novembre 2009 31 oct. 2006 à 14:37
Re,
alors au sujet du serveur, tu as besoin de 2 winsock
une pour l'écoute ....et une autre pour la connexion entre le serveur et le client
il faut que tu index la winsock du serveur
voici un exemple
'########Serveur
Private Sub Serveur_Click()
Winsock1(0).LocalPort = 10000
Winsock1(0).Listen
End Sub
Private Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long)
Load Winsock1(Winsock1.Count)
Winsock1(Winsock1.Count - 1).Accept requestID
Winsock1(Winsock1.Count - 1).SendData "coucou" & vbCrLf
End Sub
'###### Client
Private Sub Client_Click()
Winsock2.RemoteHost = "127.0.0.1"
Winsock2.RemotePort = 10000
Winsock2.Connect
End Sub
Private Sub Winsock2_DataArrival(ByVal bytesTotal As Long)
Winsock2.GetData Data$, vbString
MsgBox Data$
End Sub
Octave32
Messages postés18Date d'inscriptionmercredi 15 mars 2006StatutMembreDernière intervention 8 décembre 2008 31 oct. 2006 à 23:04
C'est daccord pour les 2 Winsocks, mais j'aimerais bien avoir quelques petites explications à propos des bout en rouge.
'########Serveur
Private Sub Serveur_Click()
Winsock1(0).LocalPort = 10000
Winsock1(0).Listen
End Sub
Private Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long)
Load Winsock1(Winsock1.Count)
Winsock1(Winsock1.Count - 1).Accept requestID
Winsock1(Winsock1.Count - 1).SendData "coucou" & vbCrLf
End Sub
'###### Client
Private Sub Client_Click()
Winsock2.RemoteHost = "127.0.0.1"
Winsock2.RemotePort = 10000
Winsock2.Connect
End Sub
Private Sub Winsock2_DataArrival(ByVal bytesTotal As Long)
Winsock2.GetData Data$, vbString
MsgBox Data$
End Sub
################
Pourquoi indicer le Winsock? et pourquoi mettre un Count? Tu compte quoi dans le Winsock?
J'ai quand même voulu essayer ta manière mais je ne peux pas le compiler, les indices comme les counts me sort une erreur.
Thx vieu ;)
Vous n’avez pas trouvé la réponse que vous recherchez ?
le cancre
Messages postés292Date d'inscriptionmercredi 25 octobre 2006StatutMembreDernière intervention27 novembre 2009 1 nov. 2006 à 01:13
Re,
pour ne plus avoir d'erreur, tu selectionne sur la Form le winsock1
et à droite dans propriétés ...case "index" tu mets 0
sinon.....
imagine le cas ou tu as 10 000 clients sur ton serveur
tu va pas mettre 10 000 winsock sur ta Form
alors on charge la winsock dynamiquement
le premier winsock1 aura l'index 0 , il servira pour l'écoute
Winsock1(0).LocalPort = 10000
Winsock1(0).Listen
si il y'a une demande de connexion
on charge un deuxieme winsock
Load winsock(1) .... <-- un exemple
la propriété .Count te donne la quantitée de winsock
au lieu de faire un ...
NouveauClient = NouveauClient + 1
Load winsock(NouveauClient) .... <-- un exemple
c'est plus simple et moins gourmand en ressource de faire ca
Load winsock(winsock1.Count)
le .Count commence à 1
l'index du winsock comme à 0
Winsock1(Winsock1.Count - 1).Accept requestID
Winsock1(Winsock1.Count - 1).SendData "coucou" & vbCrLf
on retombe bien sur l'index 1 (l'index du nouveau winsock)