cs_MeSod
Messages postés89Date d'inscriptiondimanche 21 septembre 2008StatutMembreDernière intervention26 avril 2016
-
9 sept. 2009 à 18:45
cs_MeSod
Messages postés89Date d'inscriptiondimanche 21 septembre 2008StatutMembreDernière intervention26 avril 2016
-
31 oct. 2009 à 18:01
Bonjours,
Je post sur le forum car jai un petit problème qui est le suivant :
J'ai créé une application, un debut pour un RPG en réseau.
Donc on va dire 2 projets diffèrent le client et le server.
J'ai mis 2 Winsock sur le client, le premier pour le chat, sa marche du tonnerre et le seconde pour envoyer la donner "joueur connecter/déconnecter"
Mais le problème est au niveau du deuxième winsock :
Je lui dis de se connecter a son tour .. a la même adresse que le premier ..(Donc 127.0.0.1 étant donner que je lance sur mon PC le serveur et le client) mais a un port différent et la j'ai l'erreur suivante : "Adress in use".
Sur mon programme server j'ai également les deux winsock celui qui reçois les donner du chat et les renvoi a tout le monde (C'est en multiclient) et celui qui est sencer recevoir les donnes : "joueur connecter/déconnecter"
Quelqu'un pourrait-il m'aider a régler le problème du "adress in use"?
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 9 sept. 2009 à 20:52
Salut
Cette erreur de port apparait-elle sur le socket client ou serveur ?
Côté client (celui qui se connecte), il ne faut pas préciser de port local, il le choisit seul.
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_MeSod
Messages postés89Date d'inscriptiondimanche 21 septembre 2008StatutMembreDernière intervention26 avril 2016 9 sept. 2009 à 20:58
Oui effectivement .. j'ai réussi a le régler ce problème par contre .. maintenant j'en n'est un autre ..
le winsock n°1 prend les donnée non seulement lui étant envoyer .. mais aussi les donnés envoyer au deuxième winsock et le deuxieme winsock ne reçois donc rien.
Avez vous une idée pour faire en sorte que le winsock 1 prenne les donnée lui étant envoyer et laisse passer les donnée envoyer au winsock 2 ?
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 10 sept. 2009 à 00:19
C'est impossible : un Socket ne peut être en communication qu'avec un seul autre.
TCP ou UDP ?
Tes sockets sont-ils indexés ou des composants séparés ?
Vérifie à quel Socket appartiennent les DataArrival.
Quand tu reçois une demande de connexion de la part d'un client, comment le gères-tu ?
Est ce le socket récepteur qui fait le Accept ou bien charges-tu un nouveau socket indexé (bonne méthode) ?
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 10 sept. 2009 à 08:28
Relis bien la dernièer phrase de Jack, elle est cruciale pour bien faire fonctionner n Winsock...
pour chaque vecteur de communication (chat et système)
tu devras avoir un winsock sur le client
et un sur le serveur, par client connecté + un pour écouter (attendre les connections)
Ainsi, le Winsock en attente sur le serveur écoute un port donné
lors de l'evenement ConnectionRequest, il te faut créer un nouveau Winsock (aisé grâce à un groupe de controles)
avec ce nouveau controle, tu feras un simple .Accept requestId
et hop! le client s'y connectera et ton winsock en écoute sera de nouveau prêt à être sollicité par un autre client.
Renfield - Admin CodeS-SourceS - MVP Visual Basic
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 10 sept. 2009 à 09:37
lol, ce schéma ne m'aide pas à comprendre, pour moi, ils sont identiques, à la flèche prêt.
De toute façon, créer deux canaux de communication entre deux applis ne sert pas à grand chose.
Le Chat et les commandes techniques peuvent très bien passer par le même canal.
Je te conseille de fouiner parmi les codes sources qui parlent de Chat multi-client : Tu y apprendras comment gérer un socket Serveur réellement serveur, avec :
- un socket "en écoute" sur un Port
- le socket client demande une connexion au serveur
- le socket serveur reçoit la demande MAIS ne fait pas le Accept lui-même :
Il charge un socket indexé puis fait le Accept sur ce nouveau socket.
Le socket en écoute peut ainsi rester en écoute, ce qui n'est plus le cas s'il a fait un Accept lui-même.
Il te faut donc indexer les sockets : c'est ce que tu apprendras en consultant les sources.
Pour l'instant, ta question est trop vague pour y répondre efficacement.
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Mais .. je comprend pas ce que tu veux dire .. faut donc que je dise au socket qui est en écoute de renvoyer les donnés reçu a d'autre socket sur le même serveur ?
Dans ce cas comment faire en sorte qu'il renvoie les donnée au bonne endroit ..?
Par exemple :
Si il reçois les donner d'une image comment lui faire comprendre qu'il doit les renvoyer au socket qui gère les images .. et non pas au socket du chat ?
Bon je vais aller fouiner sur quelque source en attendant ta réponse :/
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 10 sept. 2009 à 12:31
humppppfff
le client possède un Winsock1
le serveur possède un Winsock2 et un Winsock3
Serveur:
Winsock2.LocalPort = 78
Winsock2.Listen
Client:
Winsock1.Connect "localhost", 78
Serveur:
Private sub Winsock2.ConnectionRequest(Byval requestID as integer)
Winsock3.Accept requestID
End Sub
Winsock2 ne sert donc pas a communiquer.
Winsock1 dialogue avec Winsock3
pas besoin d'avoir n vecteurs de communication, a toi d'inventer un protocole pour savoir si un message est complet, de quel type de message il s'agit, quoi en faire, etC.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 10 sept. 2009 à 12:47
TCP ou UDP ?
TCP assure que le message sera délivré et renverra une info q'il ne l'ai pas
UDP, plus facile, mais ne garantit pas la délivrance du message
cs_MeSod
Messages postés89Date d'inscriptiondimanche 21 septembre 2008StatutMembreDernière intervention26 avril 2016 31 oct. 2009 à 18:01
Merci bien,
Je testerai ceci des que possible =)
Le projet etant a l'abandonner depui quelque temps suite a un probleme d'un des membre .. sa stagne .. mais je test des que possible =)
Encor merci