begin process at 2012 05 30 01:22:34
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Réseau / Internet

 > 

P2P avec WSAasyncselect


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

P2P avec WSAasyncselect

mardi 14 mars 2006 à 16:49:33 | P2P avec WSAasyncselect

JoebarGlut

Salut,
je suis en train de realiser un petit systeme p2p et pour ca j'ai un serveur dedié DS, un client C1 et un client C2 qui ont le meme code.
C1 et C2 se connectent au port 4200 du DS.
Ensuite suivant ce qu'aura décidé le serveur dédié ce sera soit C1 soit C2 qui se connecteront l'un a l'autre.
Pour ca mes clients se connectent entre eux sur le port 4300.
J'utilise alors WSAAsyncSelect(sock_client, hwnd, WM_SOCKET, FD_CONNECT | FD_CLOSE | FD_READ | FD_WRITE);  pour ma connection au serveur et pour mes clients c'est WM_SOCKET2.
Ainsi je gere les paquets différament et c'est plus clair.
Est-ce une bonne démarche ? N'y aura t il pas de conflits dans les messages ? y a t il d'autres methodes sachant que je n'ai qu'une fenetre dans mon programme ?
mardi 14 mars 2006 à 18:03:08 | Re : P2P avec WSAasyncselect

max12

Administrateur CodeS-SourceS
Comme c'est un client P2P, pour transférer des fichiers je suposes tu devrais peut-être regarder du côté des threads puisque chaque client demandera une ressource gourmande. Malheureusement, il n'y semble pas avoir beaucoup d'expert dans la matière. Des sockets blocant serait peut-être approprié.

Bonne prog.

[ Lien ]

if (CPossible)
   
mardi 14 mars 2006 à 21:20:33 | Re : P2P avec WSAasyncselect

JoebarGlut

Non ce n'est pas un P2P gourmand (8 personnes, pour commencer et ca ira maximum a 16) et chaques clients fait au maximum deux connection (la connection permanante avec les DS) et une conection/deconnection de temps en temps avec un client.
Ce qui demande beaucoup de ressources c'est le nombre de connections, ici avec 2, je pense que les WSA feront bien l'affaire.
mardi 14 mars 2006 à 21:36:30 | Re : P2P avec WSAasyncselect

JoebarGlut

Je vais reformuler ma question differement :
Est-ce qu'il est possible de faire 2 appel : 1 à connect() et 1 accept() ou ou 2 connect() (non-bloquant) avec wsasyncselect en utilisant comme parametre WM_SOCKET pour les messages entre client-serveur et WM_SOCKET2 pour les messages client-client ?
lorsque du cote client je recevrais F_READ, de WM_SOCKET je saurais alors que ca viens du serveur. Idem WM_SOCKET2 pour client.
Quelqu'un a t il deja fait ca, est-ce la procedure ideale ? ou existe il un autre moyen sans passer par les trhread si possible.
Au pire je teste demain mais comme je n'ai qu'une machine, deja que c'est tordu alors si en plus je fais du multiconnect sur la meme ip :D
merci.
mercredi 15 mars 2006 à 01:31:42 | Re : P2P avec WSAasyncselect

aardman

Membre Club
Réponse acceptée !
Salut,
En fait quand tu recois un message WM_SOCKET ou WM_SOCKET2, le wParam est le socket qui a généré cet évenement, donc il n'y a aucune ambiguité pour savoir de quelle connection l'event provient. On peut donc gerer plusieurs dizaines de socket avec un seul message, mais c'est vrai qu'utiliser plusieurs messages c'est plus pratique.

Pour info, eMule utilise WSAAsyncSelect(), et gere plusieurs centaines de socket sans probleme. Un point interessant, c'est que chaque socket possede son propre message de notification, pour des raisons pratiques.
mercredi 15 mars 2006 à 02:31:54 | Re : P2P avec WSAasyncselect

JoebarGlut

En effet, pas d'ambiguités, j'ai testé et ca fonctionne impecable !
Je pensais que WSAAsyncSelect aurais du mal a se lancer deux fois de suite sur le meme handle mais en fait aucun problemes :)
Je savais pas pour emule, ca me donne des ailes :p
merci pour la reponse, encore :D


Cette discussion est classée dans : serveur, client, p2p, fd, wsaasyncselect


Répondre à ce message

Sujets en rapport avec ce message

FD_READ [ par argali ] Bonjour,J'ai un probleme avec FD_READ qui n'est pas appele lorsque mon client envoie un message au serveur, FD_WRITE marche par contre et le serveur p Client FTP Telnet [ par nico_fip1 ] Bonsoir,Je cherche à automatiser une sequence Telnet et FTP, en me conectant aux serveurs correspondant. Celà peut se faire en VB ou en C++, avec une Connexion Client/Serveur [ par malik7934 ] Bonjour à tous!Voici mon problème: je travaille sur un prog de crypto qui a besoin à un moment donné d'envoyer des infos d'un client vers un serveur e Programmation client-serveur en C++ [ par RICO93 ] Bonjour, je débute en programmation C++, pouvez -vous m'indiquer un site ou un tutoriel axé vers le réseau, pour développer sous visual C++ , je conna LiNuX - Langage C - Appli Multiclient / Serveur [ par azurone ] Bonjour, Il a déja été fait pour un tp une application sous Win client/serveur, où les caractères envoyés par le client s'inscrive sur le serveur en t OLE Fenetre Serveur dans une fenetre client [ par funxav ] Bonjour,J'ai fait un serveur exe automation MFC (modèle Dialog).La classe qui m'intéresse dans ce serveur est un CDialog.J'ai fait un client MFC qui c Protocole RTSP/RTP (client/serveur) [ par SebFalquier ] Bonjour,Je suis actuellement en train de développer un client MRCP. Or, le protocole MRCP fonctionne en s'appuyant sur RTSP/RTP pour tunneler ses PDUs Client Serveur [ par glubust ] J'aimerais faire fonctionner une application client/serveur sous UNIX (client) et WINDOWS (serveur).Pouvez vous me dire si cela est possible ?Avez vou sockets!!!!!!!!!!!!!!! [ par dletozeun ] bonjour,J'ai encore un probleme avec les sockets:voila, g reussi a faire communiquer un serveur et un client su r 2 ordinateur distant mais cette conn Sockets asychrones et client serveur TCP [ par argali ] Bonjour,Est-ce qqun pourrait m'indiquer ou je pourrai trouver un cours complet sur les sockets asynchrones et leurs options (WSAAsyncSelect, FD_ACCEPT


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,437 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales