NetCat: UDP-соединения не прекращаются?

Ваш shebang - это не shebang. Это просто she, без bang:

#!/bin/bash  

Исправленный пример:

$ ./test.sh
BASH is: /bin/bash
actual shell is: /bin/bash
$ sudo ./test.sh
BASH is: /bin/bash
actual shell is: /bin/bash
$ cat ./test.sh 
#!/bin/bash
echo "BASH is: $BASH"
echo "actual shell is: `readlink /proc/$$/exe`"
2
25.11.2018, 17:04
2 ответа

В то время как TCP имеет концепцию соединений, у которых есть начало и конец, UDP не имеет этого. UDP — это протокол без установления соединения :, получатель UDP просто ожидает входящие пакеты в указанном порту UDP и выводит содержимое любых прибывающих пакетов UDP.

Получатель ncпонятия не имеет, сколько пакетов может поступать, а также должны ли все эти пакеты поступать с одного и того же хоста,или от нескольких хостов :он просто принимает все, что приходит на указанный порт UDP, и выводит содержимое пакетов UDP на стандартный вывод, никак не анализируя его, пока процесс ncне будет прерван.

Нет даже встроенной -гарантии того, что любые пакеты, отправленные клиентом/отправителем, будут получены в том же порядке на стороне получателя. :Пакеты могут быть потеряны или переупорядочены в пути. UDP не пытается исправить это :, это работа того, кто использует UDP для решения всех этих проблем (или игнорирует их )в зависимости от своих целей.

Вы можете выбрать конкретную строку, сделать ее означающей «конец данных» и настроить другой сценарий на стороне прослушивания для разбора входящих данных и прекращения процесса прослушивания ncпри получении этой строки. Таким образом, вы начнете создавать свой собственный (, возможно, очень простой )протокол поверх UDP. Именно для этого и был разработан протокол UDP.

В двух словах, ответ на вопрос «Возможно ли nc -ulзавершить работу автоматически?» это «Нет, если вы не сделаете что-то, что делает это».

1
27.01.2020, 22:08

netcatимеет опцию-W:

-W recvlimit    Terminate after receiving a number of packets

Так:

nc -ulW 1 192.168.0.2 54

Но вы используете ncat. Вы можете использовать этот обходной путь:

nc -ul 192.168.0.2 54 -c 'dd count=1 bs=100000 >&3' 3>&1
1
27.01.2020, 22:08

Теги

Похожие вопросы