我正在尝试编写脚本以连接到DLNA音频渲染器。
[网络上有几篇文章提供了有关如何使用UDP
和curl
进行此操作的信息,但是在我的特定情况下,我遇到了一些困难。
第一步是通过网络发送UDP
多播声明以发现网络上的DLNA设备。
发送给发现设备的消息是:
M-SEARCH * HTTP/1.1
HOST: 239.255.255.250:1900
MX: 5
Man: "ssdp:discover"
ST: urn:schemas-upnp-org:device:MediaRenderer:1
根据UDP
,此消息中通过crlf
发送的所有行应以crlf
行结尾,最后一行应有一个额外的article。>
这一切似乎很好。如果上面的消息位于文件devicediscovery.txt
中,则可以使用netcat
发送此消息:
cat devicediscovery.txt | nc -u -4 239.255.255.250 1900
[
239.255.255.250:1900
是DLNA
设备进行通信的多播地址和端口。
然而,这一切似乎也不错,如链接的文章netcat
中所指出的那样,由于消息通过dlna多播地址发送出去的IP地址不匹配,因此忽略了dlna媒体渲染器的响应,尽管响应来自路由器。本文建议使用tcpdump
捕获响应,但是我在Windows上并且使用Bash on Windows WSL
,因此tcpdump不可用,并且在开发用于自动执行dlna连接的脚本时,这种技术可能会很复杂。
是否可以使用两个单独的netcat
实例?一个实例通过dlna多播地址发送消息,另一个实例侦听路由器的响应?
我已经尝试使此工作正常,但是我不确定哪个端口netcat
应该在监听以听到传入的响应。有netcat
应该监听的标准端口吗?
我尝试了诸如nc -luv 192.168.0.1
之类的命令,但是却出现错误Servname not supported for ai_socktype
。我试图通过玩/etc/services
来弥补这一点,但没有运气。
我可以使用什么命令,我必须如何配置系统以侦听来自搜索dlna设备的响应?我想在脚本中解析响应,以便可以自动进行dlna连接。
我正在尝试编写脚本以连接到DLNA音频渲染器。网络上有几篇文章提供了有关如何使用UDP和curl进行此操作的信息,但是在我的特定情况下,我会...'
尽管您提到了DLNA的问题,但看起来您确实在要求如何最好地解决此问题。