PDA

Voir la version complète : [Reseau] Sockets et ports


Helldream
21/12/2005, 07h23
Bon, je vais reposter mon message (je viens de le faire, mais il n'apparait nulle part :p ... alors si il apparait un jour en double, désolé :p )

Re-bonjour,

J'ai un serveur linux qui écoute un port (4662 par exemple); Un client Windows qui communique avec le serveur (je lui indique donc l'IP du serveur, et le port sur lequel se connecter au serveur). Bonne nouvelle, tout marche bien : la cummunication est établie, et j'arrive à envoyer des données.

Mon soucis, c'est que quand je demande au serveur de m'indiquer l'IP du client connecté, et le port utilisé pour communiquer, il m'indique un port quelconque, qui varie pour chaque connection (une fois ce sera le port 2204, puis 2205 etc).

1e question: Est ce normal que le port utilisé pour communiquer varie à chaque connection (je suppose que oui, mais je préfère m'en assurer)?

2e question: Ceci ne pourrait-il pas poser des problèmes, si mon serveur était sur internet (là je fais mes tests en local), au niveau du firewall? En effet, comment dire au firewall que l'application va utiliser un port spécifique pour communiquer, alors que ce port change à chaque fois?

3e question: si cela est problématique, existe-il une solution pour déterminer un port spécifique pour communiquer? (je pense que non, car cela voudrait dire que tous les clients utiliseraient le même port pour communiquer avec le serveur, mais je préfère demander quand meme :p )

4e question: comment résoudre ce problème (s'il existe, bien sûr)?


Merci d'avance pour votre aide ;)

LXS
21/12/2005, 08h59
J'aimerai dire:
1/ montre ton code
2/ vas plus loin dans ta démarche d'explication.

En l'état, j'ai l'impression que cela relève plus d'une aide sur comment utiliser eMule qu'autre chose, généralement, on sait pourquoi son code fait telle chose ou une autre en lisant de la doc.

Me tromperai-je?

MrKoala
21/12/2005, 09h31
Plus techniquement, je pense que le port que tu vois varier, c'est le port que tu utilises sur ta machine pour l'établissement de la connection.

Quand tu te connectes à une machine distante, tu ne précises que le port que la machine distante va utiliser pour communiquer avec toi. Le port que tu utilises sur ta machine pour communiquer avec la machine distante est déterminé à l'établissement de la connection, et ta machine prend... ce qui est disponible. Donc si ça varie entre chaue connection, c'est normal.

Volune
21/12/2005, 10h11
1/ Oui c'est normal. Comme dit au dessus, alors que le serveur a un port fixe, le client le détermine au moment d'ouvrir la connexion, parmis les ports disponibles.

2/ Un firewall se base sur le port du serveur pour autoriser ou non un paquet. Le port du client n'est pratiquement jamais vérifié (configurations spécifiques que tu ne risques pas de rencontrer.)

3/ Non ça ne pose pas de problème.

4/ Cf. 3/ (pourquoi poser 2 fois la même question ?)

Ca ressemble plus à une question de réseau qu'à une question de C/C++

Helldream
21/12/2005, 11h34
Volune : Heuu oui c'est plus une question de réseau :p (d'ailleur c'est marqué dans le titre ) mais comme je ne savais pas si la réponse dépendait du langage utilisé, j'ai préféré mettre mon post ici.

LXS : non non, je te demande pas comment utiliser Emule :) le soucis, c'est que je demandais à mon client de joindre le serveur sur le port 4666, et que mon serveur me disait que le client communiquait avec lui sur un autre port...

Enfin, j'ai compris pourquoi, donc c'est super ^^ Merci à tous pour vos explications, et désolé si j'ai pas été très clair, j'essaierais de faire mieux à ma prochaine question :D