标签: upnp

UPnP发现可以通过Javascript完成吗?

我正在开发一个我想要发现一些UPnP设备的网页,但是客户端可能在与服务器不同的VLAN上.因此,UPnP发现需要在客户端上进行.显然,使用Javascript无法实现UDP.有没有人知道是否有办法从客户端的浏览器进行UPnP发现?

javascript upnp

8
推荐指数
1
解决办法
2964
查看次数

UPnP检测延迟

我在Raspberry Pi上安装了RaspBMC,在Window笔记本电脑上安装了XBMC,在我的Android设备上安装了UPnPlay.Raspberry Pi始终处于打开状态,旨在充当系统的服务器.

IP地址涉及:

  • 192.168.0.18:RPi

  • 192.168.0.13:笔记本电脑

  • 192.168.0.1:路由器

当我将Android设备连接到WiFi并打开UPnPlay或在笔记本电脑上启动XBMC时,之前在Raspberry Pi出现在设备列表中之前会有5-10分钟的延迟.然而,在过去的几周里,除非我在其他服务(XBMC或UPnPlay)运行时重启它,否则Pi根本不会出现.我可以ssh和sftp到Pi,并且可以从两个设备访问RaspBMC的Web界面,没有任何问题.

是否可能以某种方式丢失或阻止UPnP网络发现/通知消息?我该怎么调查这个?我对网络的了解仅限于端口转发.

我对UPnP的替代协议的建议持开放态度 - 我遇到的第一个很简单,它在我之前的设置(桌面上的XBMC将媒体发送到Apple TV)上工作得很好.


编辑:

在笔记本电脑上使用Wireshark进行的一些分析显示笔记本电脑的行为符合预期 - 通过SSDP定期发送M-SEARCH和NOTIFY数据包到239.255.255.250(我认为是多播地址).但是,RPi不仅没有响应这些带有单播数据包的数据包(正如维基百科建议的那样),而且除了在启动时它也没有发送任何SSDP数据包.

我对Wireshark和网络分析一般都很陌生,但我真的很感激你能给出的任何指导或建议.

我使用的Wireshark过滤器是"(udp.dstport == 1900或ip.addr == 192.168.0.18)和!(ip.src == 192.168.0.1)",其中192.168.0.18是我的RPi地址 - 我相信这是正确的,但正如我所说,我对Wireshark很新 - 请纠正我,如果我犯了错误!特别是,我假设RPi对M-SEARCH的多播响应会有ip.src = 192.168.0.18,但我不确定(可能是192.168.0.1或239.255.255.250)


编辑2:

这篇文章的指导下,我跑了/sbin/route -n,并获得了以下输出.

pi@raspbmc:~$ /sbin/route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
Run Code Online (Sandbox Code Playgroud)

我不知道如何解释这个,但是,从链接线程中的其他注释来看,这似乎缺少多播条目.再一次,根据链接线程的建议,我运行sudo route add -net 239.0.0.0 netmask 255.0.0.0 eth0,添加了这个 …

upnp xbmc raspberry-pi

8
推荐指数
1
解决办法
5601
查看次数

从非Android设备查找和Android NSD服务

自Android 4.1网络服务发现(NSD)可用.但是,如何找到从计算机或其他不运行android的设备中暴露NSD-Service的Android设备.如示例中所示构建一个Android应用程序会发现其他设备很好,但是,并不总是将Android作为平台.

我在我的电脑上运行UPnP发现,手机没有出现.

你可以在github上找到我在这里实现的NSD-Service .

Discovery应用程序很简单,来自android示例.

UPnP示例使用Cling,并且从他们的教程中找到我的路由器和Windows媒体播放器,所以我认为它有效.

可能是问题是基于服务发现协议的不匹配,我继续对NSD,UPnP,Bonjour,Zeroconf和所有其他可能性之间的差异感到困惑......

java android upnp service-discovery

8
推荐指数
1
解决办法
2060
查看次数

NAT端口转发的最佳选择是什么?

我想让用户轻松将NAT上的端口转发到我的C++应用程序的本地机器上.我想在OSX和Windows上做这个工作.Linux将是一个很好的奖励,但Linux用户可能更容易手动转发端口,所以它不是一个问题.LGPL类型代码没问题,但我不能使用任何直接GPL.

我很想听听任何人在这个领域有过的想法或经历,但我想到了一些具体的问题:

  • UPNP是否有公认的最佳图书馆?该MiniUPNP客户端看起来可能会奏效,但还有什么在那里?
  • Bonjour怎么样?我可以将它用于OSX计算机吗?
  • 所有大型的bittorrent应用程序都必须处理这个问题,所以现有的调查是如何进行的吗?Skype怎么样?

tcp bonjour upnp nat portforwarding

7
推荐指数
1
解决办法
1995
查看次数

iPhone到iPhone的通讯

我有点好奇我应该如何处理iPhone和两部手机之间的通信问题.

我知道需要在两个已知手机之间发送数据的应用程序.问题是数据可能非常小或非常大.我希望在服务器和消息传递层上有中间存储,但我希望有高性能的方法在设备之间进行通信,以获得更短,不重要的消息.

你总是听说网络和客户端与流行的平台和协议进行客户沟通,但我很好奇人们对与iPhone进行p2p风格通信的想法.

我很确定它应该(并且可以)被视为一个简单的可寻址机器...因此我必须构建NAT遍历网络代码到iPhone本身.我的想法是某种UPnP情况,我会要求NAT特定端口与设备通信......但我想我可以很容易地把它变成轮询情况.

当然,据我所知,Apple最终将为开发人员提供一个"推送"机制,但我希望事先将应用程序推出门外......

只是对这类事情的想法感到好奇......对多人游戏情境的任何想法也会直接适用于(并从中受益)这个问题.

iphone mobile networking upnp

7
推荐指数
1
解决办法
6581
查看次数

iPhone上的SSDP

我需要能够发送一个UDP消息,还收到一个以发现从iPhone网络上的SSDP设备.

我知道我需要将数据包发送到多播地址,我的HTTP请求需要看起来像这样:

M-SEARCH * HTTP/1.1
Host: 239.255.255.250:1900
Man: ssdp:discover
Mx: 3
ST: "urn:schemas-upnp-org:device:InternetGatewayDevice:1"
Run Code Online (Sandbox Code Playgroud)

从阅读的文档,似乎我能做到这一切与CFNetwork的,尽管阅读(并重新读取文档)我奋力上手.任何人都可以推荐和教程或代码片段让我超过最初的学习驼峰吗?

我有CFNetwork编程指南:

http://developer.apple.com/mac/library/documentation/Networking/Conceptual/CFNetwork/CFNetwork.pdf

和Beej的网络编程指南使用互联网套接字:

http://beej.us/guide/bgnet/

谢谢

戴夫

PS

在这种情况下,我无法使用任何第三方库和框架.

iphone udp upnp cfnetwork ssdp

7
推荐指数
1
解决办法
9686
查看次数

Android Http服务器和破碎的管道

我正在尝试开发一个Android UPnP应用程序,其中包含一个嵌入式http服务器,因此它可以通过局域网从设备提供媒体文件.

我使用的Web服务器的第一个实现基于来自Apache HttpCore的ElementalHttpServer示例http://hc.apache.org/httpcomponents-core-ga/index.html.它必须稍微更改一下,因为Android库中已包含的org.apache.http元素与httpCore jar中包含的最新元素不同.

我试图用jar中的那些替换那些来自jar的那些但是无法完成 - 安卓库中的那些优先级.当我更改库顺序时,重复的类有问题.

而不是罐子,我包括源代码和更改数据包名称,以避免重复的类问题.

管道损坏和连接问题仍然存在问题.

我也尝试过来自HttpCoreNIO的NHttpServer,因为它具有与基本httpCore不同的类集,可以包含和使用,而不会与Android本身的httpCore冲突.

然后我使用了NanoHTTPD,这似乎是所有http服务器中最好的,但它仍然受到与其他所有服务器相​​同的问题的困扰:

java.net.SocketException: The connection was reset
at org.apache.harmony.luni.platform.OSNetworkSystem.sendStreamImpl(Native Method)
at org.apache.harmony.luni.platform.OSNetworkSystem.sendStream(OSNetworkSystem.java:498)
at org.apache.harmony.luni.net.PlainSocketImpl.write(PlainSocketImpl.java:585)
at org.apache.harmony.luni.net.SocketOutputStream.write(SocketOutputStream.java:59)
at com.zappotv.network.http.NanoHTTPD$HTTPSession.sendResponse(NanoHTTPD.java:828)
at com.zappotv.network.http.NanoHTTPD$HTTPSession.run(NanoHTTPD.java:478)
at java.lang.Thread.run(Thread.java:1096)
Run Code Online (Sandbox Code Playgroud)

java.net.SocketException: Broken pipe
at org.apache.harmony.luni.platform.OSNetworkSystem.sendStreamImpl(Native Method)
at org.apache.harmony.luni.platform.OSNetworkSystem.sendStream(OSNetworkSystem.java:498)
at org.apache.harmony.luni.net.PlainSocketImpl.write(PlainSocketImpl.java:585)
at org.apache.harmony.luni.net.SocketOutputStream.write(SocketOutputStream.java:59)
at com.zappotv.network.http.NanoHTTPD$HTTPSession.sendResponse(NanoHTTPD.java:828)
at com.zappotv.network.http.NanoHTTPD$HTTPSession.run(NanoHTTPD.java:478)
at java.lang.Thread.run(Thread.java:1096)
Run Code Online (Sandbox Code Playgroud)

最近我已经在应用程序中实现了iJetty,但问题仍然存在.有时请求设备进入无限循环的请求.

我能做错什么?标题可能有问题吗?

sockets android upnp nanohttpd

7
推荐指数
1
解决办法
1641
查看次数

如何从命令行推送DLNA内容

我将把广播频道和IPTV频道整合到我的电视上的一个菜单中.问题是在不同来源之间进行切换是一种痛苦.所以基本上我需要在电视上创建一个菜单来选择我想要观看的频道,然后将电视切换到那个频道.我知道如何创建菜单.

解决方案的另一部分是将ITPV频道从mediaserver推送到电视屏幕.这是一个很难的部分.我最终安装了gupnp并玩它.它工作,我将能够编写应用程序.

您是否想过通过DLNA推送内容的更好解决方案?是否可以从命令行控制命令行实用程序或mediaserver?这将是一个理想的选择.

最基本的问题是如何以编程方式从渲染器上的mediaserver播放资源?

谢谢.

command-line upnp dlna

7
推荐指数
1
解决办法
9938
查看次数

通过使用UPnP发送广播数据包来发现路由器不起作用

我正在尝试实现一个简单的库,如果应用程序在NAT环境中运行,它可以通过UPnP协议发现路由器.我尝试了两种方式,多播和数据报,用于将发现数据包发送到路由器,并尝试侦听端口1901以获取路由器的响应.但是,我的代码有些问题.我尝试了以下三种方式,只有第三种方式可以正确地从路由器接收响应.我不知道为什么它在第一和第二种方式上都不起作用.

第一个:发送多播数据包,并听取端口1901的响应.

代码:

public void discovery () throws IOException {
    // SSDP port
    final int SSDP_PORT = 1900;
    final int SSDP_SEARCH_PORT = 1901;
    // Broadcast address for finding routers.
    final String SSDP_IP = "239.255.255.250";
    // Time out of the connection.
    int TIMEOUT = 5000;
    // Localhost address.
    InetAddress localhost = InetAddress.getLocalHost();

    // Send from localhost:1901
    InetSocketAddress srcAddress = new InetSocketAddress(localhost, SSDP_SEARCH_PORT);
    // Send to 239.255.255.250:1900
    InetSocketAddress dstAddress = new InetSocketAddress(InetAddress.getByName(SSDP_IP), SSDP_PORT);

    // ----------------------------------------- //
    //       Construct the request packet. …
Run Code Online (Sandbox Code Playgroud)

java datagram broadcast upnp

7
推荐指数
1
解决办法
5162
查看次数

如何使用UPnP C#发送SetAVTransportURI?

我正在尝试向我的电视(Sony Bravia KDL-42W800A)发送命令,通过UPnP播放视频.我可以使用SSDP发现网络上的所有UPnP设备.以下是来自电视的示例回复:

HTTP/1.1 200 OK
CACHE-CONTROL: max-age=1800
EXT: 
LOCATION: http://192.168.1.11:52323/dmr.xml
SERVER: Linux/2.6 UPnP/1.0 KDL-42W800A/1.7
ST: urn:schemas-upnp-org:service:AVTransport:1
USN: uuid:00000000-0000-1010-8000-d8d43c73618b::urn:schemas-upnp-org:service:AVTransport:1
X-AV-Physical-Unit-Info: pa="BRAVIA KDL-42W800A";
X-AV-Server-Info: av=5.0; cn="Sony Corporation"; mn="BRAVIA KDL-42W800A"; mv="1.7";
Run Code Online (Sandbox Code Playgroud)

从这里我已经按照位置检索包含电视上更多细节的XML文件.给出如下:

<?xml version="1.0"?>
<root xmlns="urn:schemas-upnp-org:device-1-0"
      xmlns:pnpx="http://schemas.microsoft.com/windows/pnpx/2005/11"
      xmlns:df="http://schemas.microsoft.com/windows/2008/09/devicefoundation">
  <specVersion>
    <major>1</major>
    <minor>0</minor>
  </specVersion>
  <device>
    <deviceType>urn:schemas-upnp-org:device:MediaRenderer:1</deviceType>
    <friendlyName>BRAVIA KDL-42W800A</friendlyName>
    <manufacturer>Sony Corporation</manufacturer>
    <manufacturerURL>http://www.sony.net/</manufacturerURL>
    <modelName>KDL-42W800A</modelName>
    <modelNumber>MINT1.7.0.1</modelNumber>
    <UDN>uuid:00000000-0000-1010-8000-d8d43c73618b</UDN>
    <dlna:X_DLNADOC xmlns:dlna="urn:schemas-dlna-org:device-1-0">DMR-1.50</dlna:X_DLNADOC>
    <microsoft:magicPacketWakeSupported xmlns:microsoft="urn:schemas-microsoft-com:WMPNSS-1-0">1</microsoft:magicPacketWakeSupported>
    <iconList>
      <icon>
        <mimetype>image/png</mimetype>
        <width>32</width>
        <height>32</height>
        <depth>24</depth>
        <url>/MediaRenderer_32x32.png</url>
      </icon>
      <icon>
        <mimetype>image/png</mimetype>
        <width>48</width>
        <height>48</height>
        <depth>24</depth>
        <url>/MediaRenderer_48x48.png</url>
      </icon>
      <icon>
        <mimetype>image/png</mimetype>
        <width>60</width>
        <height>60</height>
        <depth>24</depth>
        <url>/MediaRenderer_60x60.png</url>
      </icon>
      <icon>
        <mimetype>image/png</mimetype>
        <width>120</width>
        <height>120</height> …
Run Code Online (Sandbox Code Playgroud)

c# upnp

7
推荐指数
1
解决办法
4521
查看次数