gpt4 book ai didi

networking - 使用 UDP 的 Netcat 流式传输

转载 作者:可可西里 更新时间:2023-11-01 02:30:26 26 4
gpt4 key购买 nike

我可以让 netcat 使用 TCP 流式传输视频

  {server}  cat [movie].avi | nc [client ip address] 65535

{client} nc -l -p 65535 | mplayer -

我试过使用 -u 命令通过 UDP 发送,但这不起作用

  {server}  cat [movie].avi | nc -u [client ip address] 65535

{client} nc -u -l -p 65535 | mplayer -

有什么想法吗?

最佳答案

使用 TCP 和 UDP 流式传输字节之间存在根本区别...

  • TCP 在看到字节流结束时发送 EOF
  • UDP只是停止发送数据(即它不通知另一端数据停止)

结果是您的 TCP 示例有效,但 UDP 示例无效,因为 mplayer 永远不知道何时处理它获取的字节。

解决这个问题的一种方法是在双方都设置超时...首先以定时完成启动您的客户端(在子 shell 中设置 nc 部分,这样它就不会阻塞):

(nc -q 1 -u -l -p 65535 > [movie].avi&); sleep 10; fuser -k 65535/udp;\
mplayer [movie].avi; rm [movie].avi

接下来启动您的服务器...在本例中,我展示了它将文件推送到 udp/65535 上的 192.168.12.238

(cat [movie].avi | nc -u 192.168.12.238 65535&); sleep 10; \
fuser -n udp ,192.168.12.238,65535 -k

最后,确保您选择的超时时间足够长,以便对 shell 命令进行排序并完成网络传输(如果您在有线以太网 LAN 上,这通常相当快)。

关于networking - 使用 UDP 的 Netcat 流式传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8309648/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com