Accueil > Forum > > > > Sockets et ports
Sockets et ports
mercredi 11 mai 2005 à 21:06:59 |
Sockets et ports

goutbouyo
|
Salut, J'ai une petit question sur les sockets : Je fait un test de multiclients (2 seulements ...) et j'ai un problème avec les ports. Au niveau serveur : Je déclare mon socket 1 => client 1 : sin_server1.sin_port= htons(7000); Je déclare mon socket 2 => client 2 : sin_server2.sin_port= htons(7001); Là ça marche, mais si je met le même port pour les 2 sockets ça marche plus  Alors comment je fais pour savoir quel port utiliser au niveau des clients ????
|
|
mercredi 11 mai 2005 à 21:22:29 |
Re : Sockets et ports

aardman
|
Salut, Je comprend pas, combiens de sockets tu as coté serveur ? normalement il n'en faut qu'un! un part port sur lequel tu souhaites recevoir des connexions en fait.
|
|
mercredi 11 mai 2005 à 21:38:20 |
Re : Sockets et ports

goutbouyo
|
Ah ok ...
Je reçois les clients comme ça :
WSAStartup(MAKEWORD(2, 0), &wsa_server);
//on crée le socket sock_server = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
sin_server.sin_addr.s_addr = INADDR_ANY; sin_server.sin_family= AF_INET; sin_server.sin_port= htons(7000); //666
//on associe l'ip et le port bind(sock_server, (SOCKADDR *)&sin_server, sizeof(sin_server));
MessageBox(Dlg2,"Attente d'un joueur","Info",0|0);
listen(sock_server, 0); // on attend 1 seul joueur
while(quit != 1) { int sinsize = sizeof(csin_server);
// si un joueur se connecte if((csock_server = accept(sock_server, (SOCKADDR*)&sin_server, &sinsize)) != INVALID_SOCKET) { // on signal le joueur connecté MessageBox(Dlg2,"Client connecté","Info",0|0); connection=1;
while (1) { memset(buf,0,sizeof buf); recv(csock_server, buf, sizeof(buf), 0);
if (rec_data!=0) break; } Dlg2=FindWindow(NULL,"Serveur"); PostMessage(Dlg2, WM_CONNECTE, 0, 0); quit = 1; // un joueuer est connecté, on sort de la boucle } }
Donc il suffit que je remplace : csock_server par csock_server2, csock_server3 ... ???
|
|
mercredi 11 mai 2005 à 21:51:53 |
Re : Sockets et ports

aardman
|
Salut, Je comprend pas vraiment comment tu as structuré ton serveur. Juste apres le accept() tu entres dans une boucle while: while (1) { memset(buf,0,sizeof buf); recv(csock_server, buf, sizeof(buf), 0);
if (rec_data!=0) break; } Vu que cette boucle bloque la boucle principale du serveur, tu ne pourra pas accepter d'autres connexions tant que tu n'aura pas reappelé accept(). Quant aux csock_server2, csock_server3, ou sont ils? a quoi servent ils?
|
|
mercredi 11 mai 2005 à 21:57:33 |
Re : Sockets et ports

goutbouyo
|
La boucle while() juste après le accept() sert à récupérer le nom du client. Si je creée un structure Client[i].socket, je peux faire : while(quit != 1) { int sinsize = sizeof(csin_server);
// si un joueur se connecte if(Client[i].socket= accept(sock_server, (SOCKADDR*)&sin_server, &sinsize)) != INVALID_SOCKET) { // on signal le joueur connecté MessageBox(Dlg2,"Client connecté","Info",0|0); } }
C'est bon ou pas ???
|
|
mercredi 11 mai 2005 à 22:06:58 |
Re : Sockets et ports

aardman
|
Salut, La tu as la boucle de base qui accepte les connexions, elle a pas l'air d'etre bloquée (a part la messagebox) donc ca a l'air bon. Par contre comment gere tu les dialogues avec les clients ?
|
|
mercredi 11 mai 2005 à 22:26:56 |
Re : Sockets et ports

goutbouyo
|
Là j'ai qu'un seul client donc je lance le thread après la connexion : hthread=CreateThread(NULL, NULL, ThreadServerProc, NULL, NULL, &ThreadServerID);
C'est ce thread là : DWORD WINAPI ThreadServerProc(LPVOID lpParam) { while (1) { memset(rec_data,0,sizeof rec_data); rec=recv(csock_server, rec_data, sizeof(rec_data), 0);
if ((rec_data!=0)&&(rec != -1)&&(rec != 0)) { strcpy(buf2,rec_data); PostMessage(Dlg2, WM_WRITE, 0, 0); nb=atoi(rec_data); if (nb==1) break; } if ((sortie==1)||(rec == -1)||(rec == 0)) { if ((rec == -1)||(rec == 0)) PostMessage(Dlg2, WM_DECONNECTE, 0, 0); break; } } MessageBox(Dlg2,"Fin chat serveur",0,0); CloseHandle(hthread); return 0; }
En fait c'est un peu compliqué car dans mon prog côté serveur j'ai un bouton STOP qui envoi "1" au client qui sort de son thread et qui lui ensuite renvoie "1" au serveur qui sort du thread. Parce que j'ai 3 options : chat, transfert fichiers, parcours DD.
Mais dans le prog que je veux faire, je voudrais seulement un chat. Par contre je sais pas comment gérer plusieurs dans ma boucle, peux tu m'aider STP ???
|
|
mercredi 11 mai 2005 à 22:35:58 |
Re : Sockets et ports

goutbouyo
|
J'ai oublié un mot donc je réécris : Je sais pas comment gérer plusieurs dans ma boucle. Comme recv() est bloquant comment faire ???
|
|
mercredi 11 mai 2005 à 22:55:16 |
Re : Sockets et ports

aardman
|
Salut, Apparement tu as aussi oublié le mot dans le deuxieme post  Mais tu veux faire un chat entre 2 clients ou un serveur de tchat ou plusieurs clients se connectent pour tchater entre eux ? Sinon pour contourner le recv() bloquant, soit il faut utiliser d'autres threads, soit il faut utiliser les sockets non bloquants.. Enfin je te conseille de le ce livre: [ Lien ]
|
|
mercredi 11 mai 2005 à 23:17:14 |
Re : Sockets et ports

goutbouyo
|
Ok, mais j'ai vu sur ce forum que un thread par client s'est pas terrible sous windows xp ...
Je voudrais faire un chat entre plusieurs clients en fait, un peu comme MSN messenger. Mais comment faire car dans msn chaque utilisateur est à la fois client et serveur, ou alors il y a des serveurs chez microsoft qui redirigent tous les messages ???
|
|
Cette discussion est classée dans : port, sin, niveau, sockets, ports
Répondre à ce message
Sujets en rapport avec ce message
[SOCKET]Tjrs le pb de recuperation du buffer recv() [ par enthaz ]
Allez J me lance : ca fait des heures et des heures ke le newb ke je suischerche la solution :D un coté j ai un logiciel client ki envoie "coucou" sur
Socket, quand tu nous tiens ... [ par enthaz ]
Allez J me lance : ca fait des heures et des heures ke le newb ke je suischerche la solution :D un coté j ai un logiciel client ki envoie "coucou" sur
sockets : port local [ par Helkanen ]
salut !j'aimerais savoir comment avec une socket toute bête on peut récupérer le port local ouvert, si cela est possible...de même que l'ip locale qui
Sockets - Broadcast UDP [ par Toadstool ]
Je veux broadcaster un paquet UDP pour "pinger" les serveurs half-life présent sur un réseau local (cf. la source bot irc + scan de parties counter-st
Port COM [ par julienbj ]
Je cherche à récupérer la liste des ports COM existant sur un ordinateur équipé d'un windows. Auriez-vous une idée de la façon dont je pourrais procéd
sockets et proxy [ par vangeurmasker ]
Bonjour Je dévelope une application qui récupere le code source d'une page html en se connectant sur le port 80 du serveur pas un socket. Le probleme
Probleme de sockets [ par MaDC ]
J'ai fait ça, mais la reception ferme mon appli mfc sans raison... biens ur on ne reçoit rien... si qq1 pouvait m'éclairer se serait sympa de sa part
[C] Scanner de port utilise socket version linux [ par firemax ]
Salut :) J'ai une erreur de segmentation et je n'est pas la moindre idée d'ou ca peut venir :( Je n'est aucun warning lors de la compilation mais l
client serveur echange de donne [ par bapdur ]
voici la version dun client et dun serveur que je fais pour un jeu mais les donnes son envoyer en continu jaimerais aire en sorte que si je tape un ca
socket 100% CPU [ par fredo2009 ]
Salut@tousVoilà la fonction que j'utilise pour savoir si un port est ouvert sur une ip:DWORD WINAPI connection( LPVOID Param ) { struct config * conf
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|