Я хочу, чтобы команда 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?
