Я хочу отправить только одно короткое значение в пакете UDP, но выполняю команду
echo -n "hello" | nc -4u localhost 8000
Я вижу, что сервер получает привет, но мне нужно нажать Ctrl+, cчтобы выйти из команды netcat.
Как я могу закрыть его после отправки приветствия ?
Извините за шум, я перечитал страницу руководства и нашел -q
вариант.
echo -n "hello" | nc -4u -q1 localhost 8000
работает (закрывается через 1 секунду).
Почему-то не работает с -q0
.
-q seconds: after EOF on stdin, wait the specified number of seconds and then quit. If seconds is negative, wait forever.
Ответы:
Если вы используете bash, вы также можете написать
и избегайте всех идиосинкразии и несовместимости netcat.
Это также работает с отправкой на другие хосты, например:
Это не «настоящие» устройства в файловой системе, а «особые» псевдонимы bash . Дополнительная информация приведена в Руководстве по Bash .
источник
127.0.0.1
вместо этогоlocalhost
Ubuntu 14.04. (Да, у меня естьlocalhost
в/etc/hosts
.)/dev/udp/
не настоящий файл. Это всего лишь имя файла, специально интерпретируемое bash.Я не нашел эту
-q1
опцию в своем netcat. Вместо этого я использовал-w1
вариант. Ниже приведен сценарий bash, который я написал для отправки пакета udp на любой хост и порт:источник
В текущем netcat (v0.7.1) у вас есть переключатель -c:
Следовательно,
должен сделать свое дело.
источник
Netcat отправляет один пакет на новую строку. Так что ты в порядке. Если вы сделаете что-то более сложное, вам может понадобиться что-то еще.
Я дурачился с Wireshark, когда понял это. Не знаю, поможет ли это.
источник
echo -n "hello\nworld" >/dev/udp/localhost/514
и вы получите 2 строчкиУ меня была такая же проблема, но я использую
-w 0
возможность отправить только один пакет и выйти. Вы должны использовать эту команду:источник
-w0
. Ошибка: недопустимое время ожидания 0