Comment trouver un socket du numéro de port local? (Windows C++)

Je suis nouveau sur réseau sous Windows, et j'essaie de trouver quel numéro de PORT mon socket est lié à (C++, Windows 7, Visual Studio 2010 Professional). C'est un socket UDP, et de ce que je comprends, à l'aide de l'installation initiale suivante doit le lier à un hasard de port disponible/adresse:

sockaddr_in local;
local.sin_family = AF_INET;
local.sin_addr.s_addr = INADDR_ANY;
local.sin_port = 0; //randomly selected port
int result = bind(clientSock, (sockaddr*)&local, sizeof(local));
//result is always 0

Aussi loin que l'utilisation de cette méthode, elle fonctionne pour l'envoi de données ou de la lier à un port spécifique (en remplaçant le 0 avec une numéro de port). Ce dont j'ai besoin est de le lier au hasard, puis de trouver le port avec lequel il était lié par la suite. Est il possible que je puisse faire cela? Il semble que le "local" struct contient "0.0.0.0", comme l'adresse IP et le "0" comme le numéro de PORT.

Merci pour toute aide! Je l'apprécie.

Pourquoi ne pas générer un numéro de port aléatoire pour l'ouvrir, et de spécifier ce port? Alors vous saurez ce que le port a été ouvert.
re: pourquoi ne pas générer un port aléatoire -- parce que c'port aléatoire peut-être déjà en cours d'utilisation par un autre programme ou d'un service.

OriginalL'auteur Sefu | 2011-07-12