2010-10-01 11 views
1

Je me demandais comment, en utilisant C, trouver quel port est actuellement écouté par un client. Par exemple, je veux savoir quel est le port source, pas le port de destination.numéro de port client

Merci d'avance!

Répondre

0

La structure d'adresse de socket doit être complétée par l'appel système connect(). Vérifiez-le après un retour réussi de cet appel.

+0

Steve Jessop m'a donné la réponse que je cherchais, je ne sais pas quoi faire avec cette question maintenant ... – Cenoc

0

Je ne sais pas ce que vous voulez dire. Les clients n'écoutent pas, les serveurs le font.

+0

Je pensais qu'ils écoutent un numéro de port ouvert pour lequel ils interrogent le système d'exploitation. Il semble que ce soit le cas ... aussi, pour une raison quelconque, les serveurs torrent vous demandent d'envoyer le port sur lequel le client écoute. – Cenoc

+0

@Cenoc: c'est parce qu'un client bittorrent agit également comme un "serveur" pour que d'autres machines de l'essaim se connectent (c'est-à-dire, qu'il reçoit des connexions entrantes). P2P confond la division client-serveur habituelle, mais quand on parle d'une seule connexion TCP, dire "client" implique celui qui a initié la connexion. –

+0

Bien, mais il se connecte toujours en tant que client, alors ma question est, comment puis-je trouver ce port source à envoyer dans ce scénario? – Cenoc

0

Si vous parlez de la façon de numériser pour tous les ports ouverts, alors vous pourriez être après un scanner de port. Il y a beaucoup de beaucoup de beaucoup de codes sources disponibles mais je ne vous recommande certainement pas d'en utiliser un, ils sont généralement lents même si le multithreading est activé. Pourquoi? nmap: http://nmap.org/

0

Selon ce que vous voulez (que je suis trop obtus à deviner en ce moment), vous voulez appeler getsockname() ou getpeername().