Shell-Script
如何保持 netcat 連接打開?
我有兩個文件,
client.sh
和server.sh
. 所有必要的數據都在伺服器上,使用netcat發送到客戶端。客戶端只是獲取這些數據並將其顯示給最終使用者。問題是,當我嘗試將對話框載入螢幕從伺服器顯示到客戶端時:server.sh
# CLIENT PORT: 8765 # SERVER PORT: 5678 while : do touch registered_users data nc -vv -l -p 5678 > data case `cat data` in "SPLASH_SCREEN") for ((i=0;i<100;i++)) do echo $i done | dialog --title 'Loading...' --gauge 'Welcome!' 8 40 0 > /dev/tcp/127.0.0.1/8765 ;; esac done
client.sh
# CLIENT PORT: 8765 # SERVER PORT: 5678 echo "SPLASH_SCREEN" > /dev/tcp/127.0.0.1/5678 while : do nc -l -p 8765 > server_response cat server_response done
解決了!只需要使用 -k 選項
-k Forces nc to stay listening for another connection after its current connection is completed. It is an error to use this option without the -l option.
**編輯:**此答案假定您正在使用
openbsd-netcat
,某些版本(例如,某些版本gnu-netcat
的功能集有所減少,因此可能不存在某些標誌,例如-k
,包名稱可能會根據您的發行版而有所不同