我知道DLNA是UPnP的子集.我读过这篇文章:UPnP AV和DLNA有什么区别?
但是,我仍然无法理解清楚.DLNA内部有任何功能吗?如何定义此设备是DLNA还是UPnP?为什么让人们对DLNA和UPnP感到困惑?
请指教!!
我正在尝试使用Cling Java库编写DLNA应用程序.我能够搜索DLNA网络中的所有媒体服务器并播放内容.但我需要搜索网络中可用的媒体渲染器并在其上播放内容.就像UPnPlay一样.
提前致谢.
我正在做一个应用程序,它在一个启用upnp的电视机中呈现一个网页.我已经使用Cling UPnP实现了UPnP 现在我不确定如何继续进行.如何实现电视和设备之间的连接?它是套接字连接吗?有任何人有关于这个主题的任何样本或教程,这有助于我实现UPnP流媒体.
我在谷歌上搜索过,但它主要指向谷歌播放中现有的应用程序.谢谢
我目前正在将UPnP支持添加到应用程序中。它将充当媒体服务器,控制点和媒体渲染器。我的问题是,应将Media Server和Media Renderer实现为2个单独的设备还是一个包含1个嵌入式设备的根设备?
如果是后者,那么哪个是根设备?根和嵌入式设备的UUID是否相同,还是每个根/嵌入式设备唯一的UUID?
理想情况下,我只想宣传一台可以完成所有工作的设备,但是我不确定是否允许这样做。我查看了网络上的一些设备,但没有一个设备具有嵌入式设备,这使我想知道是否有一个单一的设备规范可以完成所有工作?
感谢您的指导。
是否可以使用UPNP协议在路由器上使用ESP8266进行自动端口转发?
即使我不在家,我也需要能够访问我的ESP8266模块.目前我已在路由器设置中手动配置端口转发.
但是在未来,为了使我的项目成为商业产品,它需要能够进行自动端口转发,因为这对普通用户来说是一个障碍.
在互联网上,我在ESP8266上发现了一些关于UPNP的事情,但它不是关于端口转发的.
非常感谢你提前!
是否有可能在没有服务器的情况下编写TCP P2P程序?当我在Google上搜索这个问题时,我发现了一些关于NAT遍历的内容,UPnP,我能以某种方式使用它们吗?
任何机构都使用UPnP Library for Java By Cybergarage ..
我正在使用android应用程序从我的设备中查找UPnP设备列表...
对这些最明显的任何帮助../
谢谢拉克什
有没有办法在Android上通过3G/4G连接使用UPnP进行NAT遍历,如果是这样,它是否依赖于运营商?
我正在开发一个Android UPnP/DLNA应用程序.我有一个控制点工作,我可以将文件从媒体服务器流式传输到渲染器.我可以在播放期间暂停/播放和停止文件,但我似乎无法弄清楚如何将搜索栏集成到控制点以显示播放文件的进度并能够与搜索栏进行交互.我正在使用Cling Java库来创建应用程序.如果有人有任何可以帮助我的例子,我会非常感激.
谢谢
我试图实现SubscriptionCallback示例并订阅LastChange
SubscriptionCallback callback = new SubscriptionCallback(service, 600) { // Timeout in seconds
public void established(GENASubscription sub) {
System.out.println("Established: " + sub.getSubscriptionId());
}
@Override
public void failed(GENASubscription sub, UpnpResponse response, Exception ex) {
System.err.println(
createDefaultFailureMessage(response, ex)
);
}
@Override
public void ended(GENASubscription sub, CancelReason reason, UpnpResponse response) {
// Reason should be null, or it didn't end regularly
}
public void eventReceived(GENASubscription sub) {
System.out.println("Event: " + sub.getCurrentSequence().getValue());
try {
lastChange = new LastChange(
new AVTransportLastChangeParser(),
sub.getCurrentValues().get("LastChange").toString() …Run Code Online (Sandbox Code Playgroud) 因此,我正在使用 Xamarin 和 .net 在 iOS 项目中实现 uPNP。我一直在努力获取本地设备(即运行程序的设备)的有效本地 IP 地址。
我尝试使用NetworkInterface.GetAllNetworkInterfaces(),但 Xamarin 的该方法的实现中有一个错误,并且它不起作用。
因此,我环顾四周,发现了一种简单的方法来实现这一目标。我尝试了以下方法:
IPAddress[] hostAddresses = Dns.GetHostAddresses(Dns.GetHostName());
Run Code Online (Sandbox Code Playgroud)
上面抛出了“无法解析主机...”异常(其中...是我的设备名称)。
所以它确实获取了我的设备名称,但随后无法解析它。
此代码在 Windows 下的 WPF 应用程序中运行良好。在带有 iPhone 或 iPad 模拟器的 MAC 上使用 Xamarin Studio 效果很好。
但是,当我尝试让 MAC 将应用程序启动到我的实际 iPad 设备上时,出现以下异常:
System.Net.Sockets.SocketException:无法解析 /Developer/MonoTouch/Source/mono/mcs/class/System/System 中 System.Net.Dns.Error_11001 (System.String hostName) [0x00000] 处的主机“Charrison”。 Net/Dns.cs:298 位于 /Developer/MonoTouch/Source 中的 System.Net.Dns.hostent_to_IPHostEntry (System.String originalHostName、System.String h_name、System.String[] h_aliases、System.String[] h_addrlist) [0x00082] /mono/mcs/class/System/System.Net/Dns.cs:326 位于 /Developer/MonoTouch/Source/mono/mcs/class/System 中的 System.Net.Dns.GetHostByName (System.String hostName) [0x0002a] /System.Net/Dns.cs:467 位于 /Developer/MonoTouch/Source/mono/mcs/class/System/System.Net/Dns.cs 中的 System.Net.Dns.GetHostEntry (System.String hostNameOrAddress) [0x00061] :406 在 System.Net.Dns.GetHostAddresses (System.String …
发出M-SEARCH命令时,提供服务的所有设备必须使用其提供的服务的IP地址进行回复.
我的手机有2个接口(其中包括):
根据我接收M-SEARCH的接口,我必须使用wifi的IP或mobiel来回复.
如何确定接收请求的接口?我正在寻找一种强有力的方法来做到这一点.寻找192.168 ...所以看起来不是一个好的解决方案.
我这样听M_SEARCH:
MulticastSocket clientSocket;
clientSocket = new MulticastSocket(1900);
clientSocket.joinGroup(InetAddress.getByName("239.255.255.250") );
while(true)
{
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length);
clientSocket.receive(dp);
final String msg = new String(dp.getData(), 0, dp.getLength());
if (msg.contains("M-SEARCH"))
{
DatagramSocket resSocket = new DatagramSocket(null);
String req = "HTTP/1.1 200 OK\r\n";
req += "LOCATION: http://" + IP_TO_SPECIFY + "/index.html \r\n";
req += "HOST: "+android.os.Build.MODEL+"\r\n";
req += "EXT: \r\n";
req += "ST: upnp:rootdevice\r\n";
byte [] sendData = req.getBytes();
DatagramPacket sendPacket …Run Code Online (Sandbox Code Playgroud) 我想搜索网络上的Sat> IP服务器。Sat> IP服务器将其状态通告给其他Sat> IP服务器和客户端。我不能连续发送M-SEARCH消息,而是监听服务器的NOTIFY消息。
初始化设备的网络设置后,如果已经有活动的Sat> IP服务器,我将发送M-SEARCH消息并得到响应。但是,如果我在发送M-SEARCH消息后打开Sat> IP服务器,则无法得到任何响应。
这是我的代码。
void SatIP::InitDiscoverThread()
{
if(INVALID_THREAD_CHK == DiscoverThreadChk)
{
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_attr_setstacksize(&attr, PTHREAD_STACK_SIZE);
printf("InitDiscoverThread pthread_create\n");
DiscoverThreadChk = PTH_RET_CHK(pthread_create(&DiscoverThreadID, &attr, DiscoverThreadFunc, this));
if(DiscoverThreadChk != 0)
{
ASSERT(0);
}
}
}
void SatIP::FinalizeDiscoverThread()
{
if(INVALID_THREAD_CHK != DiscoverThreadChk)
{
printf("FinalizeDiscoverThread pthread_cancel\n");
pthread_cancel(DiscoverThreadID);
DiscoverThreadChk = INVALID_THREAD_CHK;
close(discoverSocket);
}
}
void *SatIP::DiscoverThreadFunc(void* arg)
{
SatIP* satip = (SatIP *)arg;
satip->ListenSSDPResponse();
pthread_exit(NULL);
}
bool SatIP::SendMSearchMessage()
{
vSatIPServers.clear();
FinalizeDiscoverThread();
const char *searchSatIPDevice = "M-SEARCH * HTTP/1.1\r\n" \
"HOST: 239.255.255.250:1900\r\n" \ …Run Code Online (Sandbox Code Playgroud) 我想使用libminiupnpc (github)来查找设备并进行TCP端口转发/映射.但是,我找不到一个体面的文档或示例代码来说明如何使用miniupnpc API.
有人知道一个好的文档或示例代码,显示如何使用此库?
我现在拥有的是:
#include <miniupnpc/miniupnpc.h>
...
int error = 0;
UPNPDev *dev = upnpDiscover(2000, nullptr, nullptr, 0, 0, &error);
Run Code Online (Sandbox Code Playgroud)
...似乎正确地返回我的路由器上的信息:
2014-09-08 11:36:17.417132 debug - UPnP ERROR: 0
2014-09-08 11:36:17.417394 debug - UPnP device:
url: http://192.168.1.1:5431/dyndev/uuid:207605a3-efd0-d0ef-a320-162376a3d04000
st: urn:schemas-upnp-org:device:InternetGatewayDevice:1
buf: http://192.168.1.1:5431/dyndev/uuid:207605a3-efd0-d0ef-a320-162376a3d04000
Run Code Online (Sandbox Code Playgroud)
问题upnpDiscover()不仅仅是不明显需要接下来要做什么.