Possible d'ouvrir Host et Client sur Idem machine?

Octave32 Messages postés 18 Date d'inscription mercredi 15 mars 2006 Statut Membre Dernière intervention 8 décembre 2008 - 31 oct. 2006 à 04:47
Octave32 Messages postés 18 Date d'inscription mercredi 15 mars 2006 Statut Membre Derniè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! =)

6 réponses

le cancre Messages postés 292 Date d'inscription mercredi 25 octobre 2006 Statut Membre Dernière intervention 27 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
0
Octave32 Messages postés 18 Date d'inscription mercredi 15 mars 2006 Statut Membre Dernière intervention 8 décembre 2008
31 oct. 2006 à 14:15
Daccord, donc voici le host:

Private Sub host_Click(Index As Integer)
    Winsock1.LocalPort = 10000
    Winsock1.Listen
End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
    Winsock1.Accept requestID
    Winsock1.SendData "coucou" & vbCrLf
End Sub

et voila le client:

Private Sub connect_Click(Index As Integer)
    Winsock1.RemoteHost = "127.0.0.1"
    Winsock1.RemotePort = 10000
    Winsock1.connect
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    Winsock1.GetData Data$, vbString
    MsgBox Data$
End Sub

Je dois surement être dans le champs en quelque part, mais c'est la première fois j'essai d'utiliser WinSock :P

Merci vieu pour le soutien =) 
0
le cancre Messages postés 292 Date d'inscription mercredi 25 octobre 2006 Statut Membre Dernière intervention 27 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
0
Octave32 Messages postés 18 Date d'inscription mercredi 15 mars 2006 Statut Membre Derniè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 ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
le cancre Messages postés 292 Date d'inscription mercredi 25 octobre 2006 Statut Membre Dernière intervention 27 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)
0
Octave32 Messages postés 18 Date d'inscription mercredi 15 mars 2006 Statut Membre Dernière intervention 8 décembre 2008
3 nov. 2006 à 01:13
J'ai réussi à m'en sortir, merci bien de ton aide. :)
0
Rejoignez-nous