如何使用netcat发送文件并保持连接活动?

8
我正在执行命令:

netcat serveraddress myport < MY_FILE

问题在于,当netcat发送文件后,会发送一条消息来关闭连接。我需要在发送文件后从控制台中写入消息。我记得之前做过一些操作来将管道输入到stdin..是这个吗?
netcat serveraddress myport < MY_FILE | 

现在它不起作用了。

我在 unix 上。

额外信息: 这并没有在服务器端控制(例如,在服务器端使用 netcat 监听传入连接)。

5个回答

18

也许你正在做:

cat MY_FILE - | ncat ...

(请注意,我故意拼错了netcat这个单词,因为我认为ncat是一个更好的程序。)


谢谢,就这些了。如果您能添加一些关于为什么它有效或一些参考信息的小资料,那将是一个大加分项。(那个“-”是什么意思?) - quinestor
3
“-” 告诉 cat 读取标准输入。它首先读取(并写入)MY_FILE,然后读取标准输入。如果标准输入是终端,则它会阻塞等待从键盘输入。 - William Pursell

8

服务器端:

nc -k -l 10000 < my_in_file

客户端:

echo "bye" | netcat 192.168.1.6 10000 > my_in_file -

1
谢谢。然而,这并没有起作用,因为服务器端没有使用nc,而William提出的方法是使用nc。 - quinestor

6

如果要继续监听其他连接,请在 nc 上使用 -k

假设你想要连接到服务器,服务器将写入文件并打印到标准输出?

服务器:

nc -k -l $PORT | tee file ( or > file without print to stdout)

客户端

nc $IP $PORT < file_to_send

4
您可以使用nc的-q -1选项:
echo MY_FILE | nc -q -1 192.168.0.1 9000

这样做的话,即使在后台运行命令,它也能正常工作。


1

我知道这个帖子已经很老了,但是原帖使用的是Unix系统。作为参考,以下是Windows系统中类似于"cat FILE - | ncat HOST"的命令:

type FILE con | ncat HOST

然后输入CTRL-Z或CTRL-C来结束连接。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接