我可以让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示例可以工作,但UDP示例却不能,因为mplayer从不知道何时处理它获取的字节。
解决此问题的一种方法是在两端都设置超时...首先用定时完成方式启动客户端(将nc部分放在子shell中以使其不会阻塞):
(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上,这通常会很快)。