我可以让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 -
有什么想法吗?
答案 0 :(得分:13)
TCP和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,通常会很快)。