Używam netcata do uruchomienia prostego serwera takiego jak ten:
while true; do nc -l -p 2468 -e ./my_exe; done
W ten sposób każdy może połączyć się z moim hostem na porcie 2468 i porozmawiać z „my_exe”.
Niestety, jeśli ktoś chce się połączyć podczas sesji otwartej, otrzyma błąd „Odmowa połączenia”, ponieważ netcat nie będzie nasłuchiwał aż do następnej pętli „while”.
Czy istnieje sposób, aby netcat zachowywał się jak serwer wielowątkowy, tzn. Zawsze nasłuchuje połączeń przychodzących? Jeśli nie, czy istnieją jakieś obejścia tego problemu?
netcat
parallel-processing
etuardu
źródło
źródło
Odpowiedzi:
używasz niewłaściwego narzędzia do zadania: użyj czegoś takiego jak ucspi-tcp , zwłaszcza tcpserver :
źródło
Chociaż nie wspomniałeś o używanym systemie operacyjnym, założę, że jest to Linux lub Unix na podstawie składni twojego przykładu polecenia powłoki.
Jeśli w systemie działa xinetd (lub jego poprzednik inetd ), możesz użyć tego oprogramowania do nasłuchiwania połączenia na wybranym porcie i uruchomić plik wykonywalny, aby odpowiedzieć. W przypadku xinetd / inetd masz możliwość zezwalania na wiele równoczesnych połączeń, z których każde obsługiwane jest przez osobną instancję pliku wykonywalnego.
źródło
prawdopodobnie możesz po prostu ustawić proces w tle (wtedy nie czeka on na powrót przed przejściem do następnej pętli) za pomocą „&”, takiego jak:
źródło