当前位置:  开发笔记 > 程序员 > 正文

使用UDP进行Netcat流式传输

如何解决《使用UDP进行Netcat流式传输》经验,为你挑选了1个好方法。

我可以让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 -

有任何想法吗?



1> Mike Penning..:

流式字节与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上,通常会很快).

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有