【问题标题】:How to send a file using netcat and then keep the connection alive?如何使用 netcat 发送文件然后保持连接有效?
【发布时间】:2012-08-29 08:58:43
【问题描述】:

我正在发出命令:

netcat serveraddress myport < MY_FILE

问题是,一旦发送文件,netcat 就会发送一条消息以关闭连接。发送该文件后,我需要从控制台写入消息。我记得我对标准输入的管道做了一些事情。是这样吗?

netcat serveraddress myport < MY_FILE | 

现在不行了。

我在 unix 上。

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

【问题讨论】:

    标签: sockets unix netcat


    【解决方案1】:

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

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

    服务器:

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

    客户

    nc $IP $PORT < file_to_send
    

    【讨论】:

      【解决方案2】:

      我知道这个线程很老了,但是 OP 使用 unix,这里是一个相当于“cat FILE - | ncat HOST”的窗口供参考:

      type FILE con | ncat HOST
      

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

      备注

      【讨论】:

        【解决方案3】:

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

        echo MY_FILE | nc -q -1 192.168.0.1 9000
        

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

        【讨论】:

          【解决方案4】:

          服务器端:

          nc -k -l 10000 < my_in_file
          

          客户端:

          echo "bye" | netcat 192.168.1.6 10000 > my_in_file -
          

          【讨论】:

          • 谢谢。但是这不起作用,因为服务器端没有使用 nc,william 建议的就是这样做的。
          【解决方案5】:

          也许你在做:

          cat MY_FILE - | ncat ...
          

          (请注意,我故意拼错了 netcat,因为我相信 ncat 是一个优秀的程序。)

          【讨论】:

          • 谢谢,就是这样。如果您可以添加一些有关其工作原理的信息或一些参考资料,那将是一个很大的优势。 (那个“-”是什么?)
          • - 告诉 cat 读取标准输入。它首先读取(和写入)MY_FILE,然后读取标准输入。如果 stdin 是 tty,那么它只会阻止来自键盘的输入。
          猜你喜欢
          • 2011-01-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-11-16
          • 1970-01-01
          • 2016-06-08
          • 1970-01-01
          • 2012-12-07
          相关资源
          最近更新 更多