Comment savoir si un port est libre avant de monter une connexion winsock

Soyez le premier à donner votre avis sur cette source.

Snippet vu 19 160 fois - Téléchargée 34 fois

Contenu du snippet

le principe est de mettre en ecoute le port que l'on veut tester, si celui ci est deja occupé alors le programme genere une erreur que l'on trap par On Error GoTo ErreurPortOccupe.

si le port est libre c'est que l'on peut l'utiliser pour notre winsock

je vous fourni q'un exemple tres léger a vous de l'adapter a vos besoins seul le principe compte.

Source / Exemple :


creer un form avec un composant Winsock nommé Winsock1

Private Sub Form_Load()
ThePort = "135"
On Error GoTo ErreurPortOccupe
Winsock1.LocalPort = ThePort
Winsock1.Listen
Winsock1.Close
MsgBox "Le port est libre"
Exit Sub

ErreurPortOccupe:
Winsock1.Close
MsgBox "Le port est occupé"
End Sub

A voir également

Ajouter un commentaire Commentaires
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
ok, c'est aussi comme çà que je le supposait. je testerais tout de même pour en avoir la certitude ;)

à tout hasard, tu maitrises bien le WinSock?
si oui, je veux bien un peu d'aide, cf mon pb :
http://www.vbfrance.com/forum.v2.aspx?ID=424543

en l'attente....
PCPT
Messages postés
521
Date d'inscription
mardi 24 décembre 2002
Statut
Membre
Dernière intervention
11 septembre 2008
6
non,
cela veut dire que un meme port dans le protocole TCP par exemple (valable aussi pour UDP) peut etre utilisé en ecoute et en envoi sans conflit par deux applications.
Je rajoute quand meme que l'appli qui est en ecoute recevera les envois de l'appli qui est en envoi (normal).

dans mon exemple je test si le port est libre pour se mettre en ecoute (Winsock1.Listen) il suffirai de modifier l'exemple pour faire un envoi (Winsock1.senddata) et ainsi tester le port non plus en ecoute TCP mais en envoi TCP.
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
tiens, et en même tps, çà veut dire qu'on peut utiliser le même port simultanément avec 2 protocoles?
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
en effet, c'est le 2e cas....
une idée? parce qu'au final, ça laisse bien croire que le port est libre, à tord.....

PCPT
Messages postés
521
Date d'inscription
mardi 24 décembre 2002
Statut
Membre
Dernière intervention
11 septembre 2008
6
deux possibilitées :

- le winsock est configurée en TCP et ton appli sur le 6400 est en UDP.
- ton appli utilise le port 6400 en TCP mais pas en ecoute mais en sortie.

Dans ces deux cas il n'y a pas d'erreur via le on error et c'est tout a fait normal.
Afficher les 15 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.