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

qui*_*tor 7 unix sockets netcat

我发出命令:

netcat serveraddress myport < MY_FILE
Run Code Online (Sandbox Code Playgroud)

问题是,一旦发送文件,netcat就会发送一条消息来关闭连接.我需要在发送该文件后从控制台写入消息.我记得已经对pipileline做了一些事情到stdin ..是这样的吗?

netcat serveraddress myport < MY_FILE | 
Run Code Online (Sandbox Code Playgroud)

那现在不行.

我正在使用unix.

额外信息:这不承担服务器端的控制(EG使用服务器端的netcat来监听入站连接)

Wil*_*ell 13

也许你在做:

cat MY_FILE - | ncat ...
Run Code Online (Sandbox Code Playgroud)

(请注意,我故意拼错netcat,因为我认为ncat是一个优秀的程序.)

  • `-` 告诉 cat 读取标准输入。它首先读取(和写入)`MY_FILE`,然后读取标准输入。如果 stdin 是一个 tty,那么它只是阻止来自键盘的输入。 (2认同)

TOC*_*TOC 8

服务器端:

nc -k -l 10000 < my_in_file
Run Code Online (Sandbox Code Playgroud)

客户端:

echo "bye" | netcat 192.168.1.6 10000 > my_in_file -
Run Code Online (Sandbox Code Playgroud)


Ang*_*tis 6

要继续听其他连接使用-knc.

假设您要连接到服务器,服务器写入文件并打印到stdout?

服务器:

nc -k -l $PORT | tee file ( or > file without print to stdout)
Run Code Online (Sandbox Code Playgroud)

客户

nc $IP $PORT < file_to_send
Run Code Online (Sandbox Code Playgroud)


小智 5

您可以使用 nc 的 -q -1 选项:

echo MY_FILE | nc -q -1 192.168.0.1 9000
Run Code Online (Sandbox Code Playgroud)

这样,如果该命令在后台运行,它也将起作用。