Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets 如何使用netcat发送文件,然后使连接保持活动状态?_Sockets_Unix_Netcat - Fatal编程技术网

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

Sockets 如何使用netcat发送文件,然后使连接保持活动状态?,sockets,unix,netcat,Sockets,Unix,Netcat,我发出命令: netcat serveraddress myport < MY_FILE netcat服务器地址myport

我发出命令:

netcat serveraddress myport < MY_FILE
netcat服务器地址myport
问题是,一旦文件被发送,netcat就会发送一条消息来关闭连接。发送该文件后,我需要从控制台写入消息。我记得我对皮皮莱恩做了些什么。。是这个吗

netcat serveraddress myport < MY_FILE | 
netcat服务器地址myport
现在不行了

我用的是unix


额外信息:这没有假定服务器端控制(例如,在服务器端使用netcat侦听入站连接)

可能您正在执行以下操作:

cat MY_FILE - | ncat ...
(请注意,我故意错误地推销netcat,因为我相信
ncat
是一个更优秀的程序。)

服务器端:

nc -k -l 10000 < my_in_file

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

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

服务器:

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

nc $IP $PORT < file_to_send
nc$IP$PORT<要发送的文件

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

echo MY_FILE | nc -q -1 192.168.0.1 9000

这样,如果命令在后台运行,它也会工作。

我意识到这个线程非常旧,但OP使用unix,这里的参考是相当于“cat FILE-| ncat HOST”的windows:

然后键入CTRL-Z或CTRL-C结束连接

注释

  • “con”表示控制台输入,请参阅
  • 它适用于二进制文件

谢谢,就这样。如果你能添加一些关于为什么这样做的信息,或者一些参考资料,那将是一个巨大的优势。(那是什么?)
-
告诉cat读取标准输入。它首先读取(并写入)
MY_文件
,然后读取stdin。如果stdin是一个tty,那么它只会阻止来自键盘的输入。谢谢。然而,这并没有起作用,因为服务器端并没有使用nc,william所建议的就是这样。
echo MY_FILE | nc -q -1 192.168.0.1 9000
type FILE con | ncat HOST