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 243 fois - Téléchargée 35 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
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
3 avril 2005 à 22:51
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
thierrydelepine Messages postés 521 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 septembre 2008 6
3 avril 2005 à 22:18
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.
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
3 avril 2005 à 21:39
tiens, et en même tps, çà veut dire qu'on peut utiliser le même port simultanément avec 2 protocoles?
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
3 avril 2005 à 21:38
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
thierrydelepine Messages postés 521 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 septembre 2008 6
3 avril 2005 à 20:42
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.