Je veux que la commande nc
écoute sur un port TCP, donc j'ai fait :
nc -lv 8888
Ensuite, dans une autre console, j'ai vérifié si un autre programme tentant d'écouter sur le même port obtiendrait une erreur de type Adresse déjà utilisée
, donc j'ai émis à nouveau la même commande :
nc -lv 8888
À ma grande surprise, la deuxième commande a également réussi. En enquêtant sur la façon dont 2 programmes peuvent écouter sur le même port TCP, j'ai découvert que c'est possible si le socket d'écoute est ouvert avec l'option SO_REUSEPORT
, donc je imagine que nc
l'utilise.
Comment puis-je faire en sorte que nc
interdise à d'autres programmes d'utiliser le même port ? Je voudrais qu'il écoute sur le port 8888 et m'assurer que c'est le seul programme qui écoutera sur ce port.
Jusqu'à présent, j'ai réussi à faire ce que je veux en introduisant socat
avec nc
de cette manière :
socat TCP-LISTEN:8888,fork TCP:localhost:4444
nc -lv 4444
Parce que socat
interdit à tout autre programme d'écouter sur le même port.
Mais est-il possible d'accomplir cela avec uniquement nc
?