使用WSL上的BASH监听来自DLNA渲染器的UDP响应

问题描述 投票:0回答:1

我正在尝试编写脚本以连接到DLNA音频渲染器。

[网络上有几篇文章提供了有关如何使用UDPcurl进行此操作的信息,但是在我的特定情况下,我遇到了一些困难。

第一步是通过网络发送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:1900DLNA设备进行通信的多播地址和端口。

然而,这一切似乎也不错,如链接的文章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进行此操作的信息,但是在我的特定情况下,我会...'

bash networking udp netcat dlna
1个回答
0
投票

尽管您提到了DLNA的问题,但看起来您确实在要求如何最好地解决此问题。

© www.soinside.com 2019 - 2024. All rights reserved.