web-dev-qa-db-ja.com

netcatを使用してテキストファイルの内容をサーバーに送信しますか?

ポート5144でリッスンしているデーモンプロセスがあり、これを変更することはできません。

Netcatを使用してテキストファイルの内容をサーバーに送信したいのですが、これを押すとnetcatがターミナルをハングアップします。 Ctrl+C

cat file.txt | nc -u 127.0.0.1 5144

これを機能させる唯一の方法は、nc -u 127.0.0.1 5144を実行して、ファイルの内容を手動でコピー/貼り付けることです。

何か案は?


また注意してください:

  1. cat file.txt | ...bash: ...: command not foundにつながり、引き続きターミナルを使用できます
  2. nc -u 127.0.0.1 5144 < file.txtを使用すると、|を使用した場合と同じ動作になります。上
13
Amil

GNUバージョンのnetcatを使用している場合は、-cフラグを使用してEOF上の接続を閉じることができます。

-c、--close close connection on EOF from stdin

ツールの元のバージョンを使用している場合は、-qフラグを使用できます。

-q秒は、EOF on stdinおよびdelays秒後に終了します

元のバージョンの例は次のとおりです。

cat file.txt | nc -u -q 0 127.0.0.1 5144

元のコマンドに "-q 0"を追加しました。これにより、ファイルが送信された後に接続が閉じます。

7
Kaplaa

送信後、EOF接続がアイドル状態のままになると想定すると、timeoutがゼロに等しい場合に機能する-w timeoutオプションを使用できます(愚かな-qとは異なります)オプション...)

cat file.text | nc -u localhost 4300 -w0
1
Bora M. Alper

FreeBSDからWindowsに転送する場合:

FreeBSD:cat file.txt | nc -N 10.0.0.5 5144

-NはEOF後にネットワークソケットをシャットダウンします

Windows:nc -l -p 5144 > output.txt

-lは、接続が閉じたときにリッスンを停止します(-Lとは異なります)

0
Eugene Petrov