我正在开发一个P2P应用程序,我需要使用UPnP通过NAT路由器/防火墙进行通信.但是,.NET Framework似乎不包含对UPnP的支持.
是否有适用于.NET的UPnP库?C#还是VB.NET?
更新:我发现NATUPnP 1.0类型库(NATUPNP.DLL)COM组件是Windows(自Windows XP以来)的一部分,允许您使用UPnP轻松设置/维护端口转发.
我在这里写了一篇包含代码示例的文章: .NET Framework:通过NAT路由器通过UPnP进行通信(通用即插即用)
是否有通过UPnP实现服务发现和发布的库?
(我试图找到JmDNS的一些替代方案,虽然协议方面为我们的目的工作得很好,但作为一个库非常不稳定,具有令人无法接受的不良崩溃倾向.)
我想在Android中创建一个DLNA媒体服务器类型的东西.我发现自己是一个名为CyberLink的UPnP Java库,我正在寻找为M-DMS或移动数字媒体服务器实现DLNA接口,这里有一个快速描述:
问题是我找不到这种设备的实际技术规范.我已经付出了很多努力谷歌搜索,所以请不要向我扔'JFGI'.我遇到了一个论坛帖子,暗示我可能需要为访问规范付费,但它很模糊:
http://www.ps3mediaserver.org/forum/viewtopic.php?f=4&t=3608
作为明显解决方案发布的链接也被破坏,我在当前的UPnP网站上找不到任何类似的文档.
有谁知道我在哪里可以找到DLNA规格?或者也许是我自己实施它的替代解决方案?任何帮助将多不胜感激!
我想在控制台模式下在本地网络上列出我可用的upnp/dlna渲染器.
我可以使用gupnp但不能在控制台模式下执行此操作
我在哪里可以开始用C#编写媒体服务器,如PlayOn http://www.themediamall.com/playon
更新:
我已经了解到PlayOn是一个DLNA/UPnP媒体服务器,但我仍然在寻找这种类型服务器的C#示例实现.如果你能指出我可用于将照片和/或视频内容服务到XBOX 360,Playstation 3,Media Center或Media Center Extenders等媒体客户端的一些示例代码,我将获得奖励并将奖励它
我开发了一个应用程序,它本质上只是一个小的ftp服务器,能够指定您希望在启动时共享的目录.我正在使用ftplib作为服务器,因为它很容易生病.我唯一的问题是,如果你在路由器后面,你必须手动转发路由器上的端口,我发现它对我的用户(又名同事/客户端)来说有点太复杂了.
所以我一直在寻找一个开放端口的简单解决方案,但我发现大多数API太宽泛而且超出我的想象.有人知道一个相对简单的解决方案吗?
注意:它实际上只会在Windows上使用,尽管欢迎跨平台兼容性.如果有一个更简单的Windows解决方案,那么我会选择它.
谢谢!
我创建了一个小程序来测试UPnP Multicast(Visual C#2010 Express,在Windows 7 Professional 64 Bit上运行).我可以从网络中的UPnP设备收到UPnP NOTIFY消息.但是当我发送M-SEARCH消息时,我得不到答案.
我在iOS环境中测试了相同的代码(适用于iOS的Monotouch,在Mac上的iPhone模拟器上运行).它运行良好,我得到了我的UPnP设备的所有搜索响应.我也可以从我的Windows程序中看到M-SEARCH消息.
看起来Windows(或防火墙?)隐藏了搜索响应.任何的想法?
这是代码:
IPEndPoint LocalEndPoint = new IPEndPoint(IPAddress.Any, 1900);
IPEndPoint MulticastEndPoint = new IPEndPoint(IPAddress.Parse("239.255.255.250"), 1900);
Socket UdpSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
UdpSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
UdpSocket.Bind(LocalEndPoint);
UdpSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(MulticastEndPoint.Address, IPAddress.Any));
UdpSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, 2);
UdpSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastLoopback, true);
Console.WriteLine("UDP-Socket setup done...\r\n");
string SearchString = "M-SEARCH * HTTP/1.1\r\nHOST:239.255.255.250:1900\r\nMAN:\"ssdp:discover\"\r\nST:ssdp:all\r\nMX:3\r\n\r\n";
UdpSocket.SendTo(Encoding.UTF8.GetBytes(SearchString), SocketFlags.None, MulticastEndPoint);
Console.WriteLine("M-Search sent...\r\n");
byte[] ReceiveBuffer = new byte[64000];
int ReceivedBytes = 0;
while (true)
{
if (UdpSocket.Available > 0)
{
ReceivedBytes = UdpSocket.Receive(ReceiveBuffer, …Run Code Online (Sandbox Code Playgroud) 我正在寻找一个Python 的UPnP客户端的开源实现,更具体地说是它的Internet网关设备(IGD)部分.
目前,我只能在PyMediaServer,PyMedS,BRisa或Coherence等项目中找到UPnP媒体服务器实现.
我确信我可以使用这些代码库作为开始,但媒体服务器部分将引入不必要的复杂性.
那么你能推荐一个客户端UPnP(希望是IGD)Python库吗?另一种方法是将调用调用到诸如MiniUPnP之类的C库,但我更喜欢纯Python实现.
更新:StackOverflow上提供了一个有趣的SSDP和UPnP相关讨论.
我已经使用Cling创建了应用程序并且工作正常但是当我创建发布版本时,我得到以下消息并且渲染器上没有任何内容:
11-22 16:24:53.341 20172-20172/? I/RendererCommand? TrackMetadata : TrackMetadata [id=1, title=IMG-20151120-WA0007, artist=, genre=, artURI=res=http://192.168.1.4:8089/1.jpg, itemClass=object.item.imageItem]
11-22 16:24:53.345 20172-20172/? V/RendererCommand? Resume
11-22 16:24:53.351 20172-20301/? W/RendererCommand? Fail to stop ! Error: Current state of service prevents invoking that action. Error writing request message. Can't transform message payload: java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType. (HTTP response was: 500 Internal Server Error)
11-22 16:24:53.351 20172-20301/? I/RendererCommand? Set uri to http://192.168.1.4:8089/1.jpg
11-22 16:24:53.353 20172-20386/? D/RendererCommand? Update state !
11-22 16:24:53.354 20172-20264/? W/RendererCommand? Fail …Run Code Online (Sandbox Code Playgroud)