使用/ dev / tcp而不是wget

时间:2010-05-04 23:16:23

标签: linux bash 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

有没有办法在单行中使用wget,curl或其他一些库来进行?

2 个答案:

答案 0 :(得分:9)

第二个代码段失败,因为它打开了两个单独的TCP套接字。 echo连接到www.google.com并写入HTTP请求;然后第二行打开另一个连接并尝试从该套接字读取。第二个套接字只是阻塞,因为Google正在等待发送HTTP请求。

答案 1 :(得分:1)

不是我的专业领域,但我认为第二个示例将打开第二个连接,而第一个示例保持对同一连接的打开句柄。所以任何涉及只打开一个连接的解决方案都应该有效。