отправить udp пакет windows




Как отправить только один пакет UDP с netcat? (3)

Я хочу отправить только одно короткое значение в UDP-пакете, но запустив команду

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

Я вижу, что сервер получает привет, но мне нужно нажать Ctrl + c, чтобы выйти из команды netcat.

Как я могу заставить его выйти после отправки приветствия ?

Извините, за шум я перечитал справочную страницу и нашел параметр -q .

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

работает (он завершает работу через 1 секунду).

По какой-то причине он не работает с -q0 .


Netcat отправляет один пакет на новую строку. Так что ты в порядке. Если вы сделаете что-нибудь более сложное, вам может понадобиться что-то еще.

Я обманывал Wireshark, когда понял это. Не знаю, помогает ли это.


Если вы используете bash, вы можете написать

echo -n "hello" >/dev/udp/localhost/8000

и избегать всех особенностей и несовместимости netcat.

Это также работает для отправки другим хостам, например:

echo -n "hello" >/dev/udp/remotehost/8000

Это не «настоящие» устройства в файловой системе, а bash «специальные» aliases .


Я не нашел параметр -q1 на моем netcat. Вместо этого я использовал параметр -w1 . Ниже приведен сценарий bash, который я сделал для отправки пакета udp на любой хост и порт:

#!/bin/bash

def_host=localhost
def_port=43211

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

echo -n "$1" | nc -4u -w1 $HOST $PORT