Serveur tcp sur plusieurs ports

petitchech Messages postés 114 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 28 juin 2004 - 18 janv. 2004 à 15:03
sebseb42 Messages postés 495 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 novembre 2007 - 18 janv. 2004 à 22:11
Bonjours,

Est il possible de faire un serveur tcp sur plusieurs ports ?

13 réponses

sebseb42 Messages postés 495 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 novembre 2007 1
18 janv. 2004 à 19:33
oui :D
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
18 janv. 2004 à 19:37
justifiez votre réponse
petitchech Messages postés 114 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 28 juin 2004
18 janv. 2004 à 19:45
Ici on mes le port
sin_port=htons(port);

Moi je veux que le serveur ecoute sur 2 ports ou plus en meme temp.
Comment je peut faire ?

Merci de m'aider.
sebseb42 Messages postés 495 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 novembre 2007 1
18 janv. 2004 à 20:04
port = 37;
sin_port1 = htons(port);

port = 38;
sin_port2 = htons(port);

port = 39;
sin_port3 = htons(port);

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

Posez votre question
petitchech Messages postés 114 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 28 juin 2004
18 janv. 2004 à 20:06
ok merci de ton aide.
petitchech Messages postés 114 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 28 juin 2004
18 janv. 2004 à 20:11
Eu sa marche pas sa me dit : error C2039: 'sin_port1' : is not a member of 'sockaddr_in'
sebseb42 Messages postés 495 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 novembre 2007 1
18 janv. 2004 à 20:23
cherche un peu, on peux pas tout te servir sur un plateau
petitchech Messages postés 114 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 28 juin 2004
18 janv. 2004 à 20:50
Si ses pour me donner des trucs faux et en conclusion me dire sa ses pas lapeine.
sebseb42 Messages postés 495 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 novembre 2007 1
18 janv. 2004 à 21:01
je ne t'ai rien donner de faux, c'est juste incomplet, a toit de trouver le reste, aparament tu as deja un exemple qui fonctionne, a toi de trouver ce quil te reste a dupliquer pour obtenir plusieurs ecoute en meme temps
petitchech Messages postés 114 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 28 juin 2004
18 janv. 2004 à 21:30
Tu pourais me donner la reponse au lieu de me faire chercher :(.

Bon moi j'ai sa :

sockaddrserv.sin_family = AF_INET;
sockaddrserv.sin_addr.s_addr = INADDR_ANY;
sockaddrserv.sin_port = htons(port);

Sserv = socket(AF_INET,SOCK_STREAM,0);
bind(Sserv,(SOCKADDR*)&sockaddrserv2,sizeof(sockaddrserv2));

listen(Sserv,0);

donc pour faire une ecoute sur 2 ports je doi doubler sa est faire :

sockaddrserv.sin_family = AF_INET;
sockaddrserv.sin_addr.s_addr = INADDR_ANY;
sockaddrserv.sin_port = htons(port);

sockaddrserv2.sin_family = AF_INET;
sockaddrserv2.sin_addr.s_addr = INADDR_ANY;
sockaddrserv2.sin_port = htons(port2);

Sserv = socket(AF_INET,SOCK_STREAM,0);
Sserv2 = socket(AF_INET,SOCK_STREAM,0);
bind(Sserv,(SOCKADDR*)&sockaddrserv2,sizeof(sockaddrserv2));
bind(Sserv2,(SOCKADDR*)&sockaddrserv2,sizeof(sockaddrserv2));

listen(Sserv,0);
listen(Sserv2,0);

?
sebseb42 Messages postés 495 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 novembre 2007 1
18 janv. 2004 à 21:51
"Tu pourais me donner la reponse au lieu de me faire chercher :("

j'hallucine, tu est certes sur un site d'entre-aide, mais pas sur un site ou on te branle et on te fait a manger

tu as tester ton code avant de demander si c'etais bon ? =)

fait juste attention a ca :

/*
bind(Sserv,(SOCKADDR*)&sockaddrserv2,sizeof(sockaddrserv2));
bind(Sserv2,(SOCKADDR*)&sockaddrserv2,sizeof(sockaddrserv2));
*/

regarde les deux bind utilise le meme sockaddrserv, fait attention...
petitchech Messages postés 114 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 28 juin 2004
18 janv. 2004 à 22:00
Je sai qu'on est sur un site d'entre-aide mais si je vien sur le forum ses que j'ai deja chercher.

Oui j'ai vu l'erreur que j'ai marqué mais j'ai pas pu la corriger sur le forum.
Je n'est pas tester car apré qu'on ecoute sur les deux ports, sa fai comme si s'etes deux serveurs et je voi pas comment je peut les reliers enssemble.

Enfin si tu a pas envi de m'aidé ses pas grave je me debrouillerai san.
sebseb42 Messages postés 495 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 novembre 2007 1
18 janv. 2004 à 22:11
c'est pas que je ne veux pas t'aider, c'est juste que je ne veux pas tout te faire

ce que tu devrais faire, c'est declarer une variable retour, de type int, et tester les commandes bind et listen

genre

retour = bind(....);
printf("bind : %d\\n", retour);

retour = listen(....);
printf("listen : %d\\n", retour);

si tout ce passe bien, tu devrais avoir -1 ou 0, je sais pu, enfin regarde les codes de retour de ces fonctions... sinon c'est que c'est pas bon

aussi tu pourra tester en te connectant sur ton serveur, avec telnet par exemple
Rejoignez-nous