136

UDP パケットで短い値を 1 つだけ送信したいが、コマンドを実行する

echo -n "hello" | nc -4u localhost 8000

サーバーがhelloを取得していることがわかりますが、Ctrl+を押しcて netcat コマンドを終了する必要があります。

helloを送信した後に終了するにはどうすればよいですか?


申し訳ありませんが、ノイズが発生しました。マニュアルページを読み直して、-qオプションを見つけました。

 echo -n "hello" | nc -4u -q1 localhost 8000

動作します (1 秒後に終了します)。

何らかの理由で動作しません-q0

4

5 に答える 5

48

-q1netcatでオプションが見つかりませんでした。代わりに、-w1オプションを使用しました。以下は、任意のホストとポートに udp パケットを送信するために実行した bash スクリプトです。

#!/bin/bash

def_host=localhost
def_port=43211

HOST=${2:-$def_host}
PORT=${3:-$def_port}

echo -n "$1" | nc -4u -w1 $HOST $PORT
于 2012-12-04T19:19:56.273 に答える
14

現在の netcat (v0.7.1) では -c スイッチがあります:

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

したがって、

echo "hi" | nc -cu localhost 8000

トリックを行う必要があります。

于 2017-07-21T14:15:07.307 に答える
5

Netcat は、改行ごとに 1 つのパケットを送信します。だからあなたは元気です。より複雑なことを行う場合は、別のものが必要になる場合があります。

これに気付いたとき、私は Wireshark をいじっていました。それが役立つかどうかわからない。

于 2013-05-25T02:10:43.480 に答える