Используя/dev/tcp вместо wget

Почему делает эту работу:

exec 3<>/dev/tcp/www.google.com/80
echo -e "GET / HTTP/1.1\n\n">&3
cat <&3

И этот сбой:

echo -e "GET / HTTP/1.1\n\n" > /dev/tcp/www.google.com/80
cat </dev/tcp/www.google.com/80

Существует ли способ сделать это в коротком w/o, использующем wget, завихрении или некоторой другой библиотеке?

7
задан User1 4 May 2010 в 23:16
поделиться

2 ответа

Второй фрагмент не работает, потому что он открывает два отдельных TCP-сокета. echo соединяется с www.google.com и пишет HTTP-запрос; а затем вторая строка открывает другое соединение и пытается прочитать из этого сокета. Второй сокет просто блокируется, потому что Google ждет отправки HTTP-запроса.

10
ответ дан 6 December 2019 в 23:02
поделиться

Это не моя компетенция, но я думаю, что второй пример открывает второе соединение, в то время как первый пример сохраняет открытый хэндл того же соединения. Поэтому любое решение, включающее открытие только одного соединения, должно работать.

1
ответ дан 6 December 2019 в 23:02
поделиться
Другие вопросы по тегам:

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