Я хочу, чтобы команда nc
прослушивала порт TCP, поэтому я сделал:
nc -lv 8888
Затем в другой консоли я проверил, получит ли другая программа, пытающаяся прослушивать этот же порт, тип ошибки « Address already in use
», поэтому я снова выполнил ту же команду:
nc -lv 8888
К моему удивлению, вторая команда также преуспела. Исследуя, как две программы могут прослушивать один и тот же порт TCP, я обнаружил, что это возможно, если сокет прослушивания открыт с параметром SO_REUSEPORT
, поэтому я предполагаю, что nc
использует его.
Как я могу заставить nc
запретить другим программам использовать тот же порт? Мне бы хотелось, чтобы он прослушивал порт 8888 и был уверен, что это единственная программа, которая будет прослушивать этот порт.
До сих пор я мог делать то, что я хочу, представляя socat
вместе с nc
следующим образом:
socat TCP-LISTEN:8888,fork TCP:localhost:4444
nc -lv 4444
Потому что socat
запрещает любой другой программе прослушивать тот же порт.
Но возможно ли это сделать только с помощью nc
?