netcat как многопоточный сервер

Я использую netcat для запуска простого сервера, как это:

while true; do nc -l -p 2468 -e ./my_exe; done

таким образом, любой желающий может подключиться к моему хосту через порт 2468 и поговорить с "my_exe".


К сожалению, если кто-то еще хочет подключиться во время открытого сеанса, он получит ошибку "соединение отклонено", потому что netcat больше не слушает до следующего цикла "while".

есть ли способ заставить netcat вести себя как многопоточный сервер, т. е. всегда слушать входящие соединения? Если нет, есть ли какие-то обходные пути для этого?

18
задан Hennes
12.01.2023 5:34 Количество просмотров материала 2818
Распечатать страницу

3 ответа

вы используете неправильный инструмент для этой задачи: использовать что-то вроде ucspi-tcp, особенно tcpserver:

tcpserver waits for incoming connections and, for each connection, 
runs a program of your choice.
16
отвечен akira 2023-01-13 13:22

хотя вы не упомянули операционную систему, которую используете, я предполагаю, что это Linux или Unix на основе синтаксиса вашего примера команды оболочки.

Если ваша система работает xinetd (или его предшественник inetd), вы можете использовать это программное обеспечение для прослушивания соединения на выбранном вами Порту и запуска исполняемого файла для ответа. С помощью xinetd / inetd можно разрешить несколько одновременных подключений, каждое из которых обслуживается отдельным экземпляром вашего исполняемого файла.

3
отвечен Mox 2023-01-13 15:39

скорее всего, вы можете просто фоновый процесс (тогда он не ждет возврата перед переходом к следующему циклу) с помощью"&", например:

while true; do nc -l -p 2468 -e ./my_exe &; done
-2
отвечен nairb 2023-01-13 17:56

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх