小编agu*_*iva的帖子

SSDP和Android,如何回复M-SEARCH

发出M-SEARCH命令时,提供服务的所有设备必须使用其提供的服务的IP地址进行回复.

我的手机有2个接口(其中包括):

  • 192.168.1.5:wifi的界面
  • 25.156.35.4:移动网络接口

根据我接收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)

java android upnp dlna ssdp

2
推荐指数
1
解决办法
3870
查看次数

标签 统计

android ×1

dlna ×1

java ×1

ssdp ×1

upnp ×1