Vous ne mentionnez pas le protocole que vous voulez utiliser, c'est-à-dire TCP ou UDP - et il est également important de réaliser que "port" n'est pas aussi granulaire que le système le supporte pour désambiguïser les sockets. Par exemple, si votre système possède plusieurs adresses IP, le port 80 peut être utilisé sur toutes les adresses IP (soit l'application s'est liée à "0.0.0.0" ou ": :" ou à chaque adresse IP successivement), soit il peut être utilisé uniquement sur un sous-ensemble de ces adresses IP.
Le meilleur moyen, et le plus sûr, de déterminer si un port/adresse est libre et disponible est d'essayer de s'y connecter. Netcat est très pratique pour cela.
nc -l \[-s a.b.c.d\] -p NN
tentera de se lier au port TCP NN sur (optionnel, la valeur par défaut sera toutes les adresses) a.b.c.d. Ajoutez l'option -u pour faire de même en UDP.
Ensuite, pour savoir si le port est vraiment "ouvert" comme vous le demandez, vous devez commencer à examiner les règles potentielles du pare-feu. Encore une fois, la chose la plus simple est d'essayer de se connecter au port. Utilisez netcat comme ci-dessus, sur le serveur, et depuis un client, utilisez netcat pour tenter de vous connecter au port que vous avez ouvert.
nc [-u] a.b.c.d NN
se connectera au port NN sur a.b.c.d, en utilisant UDP si l'option -u est spécifiée. Vous pouvez alors taper une entrée dans l'extrémité client, et elle devrait apparaître sur le serveur. Si ce n'est pas le cas, vous devez vous tourner vers des outils spécifiques au système et au réseau.