程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了DatagramSocket Receive 方法未在 Android TV 上的 UPnP/DLNA 发现中接收任何数据包大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决DatagramSocket Receive 方法未在 Android TV 上的 UPnP/DLNA 发现中接收任何数据包?

开发过程中遇到DatagramSocket Receive 方法未在 Android TV 上的 UPnP/DLNA 发现中接收任何数据包的问题如何解决?下面主要结合日常开发的经验,给出你关于DatagramSocket Receive 方法未在 Android TV 上的 UPnP/DLNA 发现中接收任何数据包的解决方法建议,希望对你解决DatagramSocket Receive 方法未在 Android TV 上的 UPnP/DLNA 发现中接收任何数据包有所启发或帮助;
companion object {
    private const val disCOVER_TIMEOUT = 1500
    private const val liNE_END = "\r\n"
    private const val DEFAulT_query = "M-SEARCH * http/1.1" + liNE_END +
            "HOST: 239.255.255.250:1900" + liNE_END +
            "MAN: \"ssdp:discover\"" + liNE_END +
            "MX: 1" + liNE_END +  //"ST: urn:scheR_126_11845@as-upnp-org:service:AVTransport:1" + liNE_END + // Use for Sonos
            "ST: urn:scheR_126_11845@as-upnp-org:device:InternetGatewayDevice:1" + liNE_END + // Use for Routes
            liNE_END
    private const val DEFAult_address = "239.255.255.250"}


suspend fun startUPnPdiscovery() {
    withContext(dispatchers.IO) {
        val wifi =
            context.applicationContext.getSystemservice(Context.WIFI_serviCE) as WifiManager
        if (wifi != null) {
            val lock = wifi.createMulticastLock("mylock")
            lock.acquire()
            var socket: DatagramSocket? = null
            try {
                val group = InetAddress.getByname("239.255.255.250")
                val port = 1900
                val query = customquery
                socket = DatagramSocket(null)
                socket.reuseAddress = true
                socket.broadcast = true
                socket.bind(InetSocketAddress(port))
                val datagramPacketrequest =
                    DatagramPacket(query.toByteArray(),query.length,group,port)
                socket.send(datagramPacketrequest)
                while (true) {
                    val datagramPacket = DatagramPacket(ByteArray(1024),1024)
                    socket.receive(datagramPacket)
                    val response = String(datagramPacket.data,datagramPacket.length)
                    if (response.subString(0,12).toupperCase() == "http/1.1 200") {
                        val device = UPnPDevice(datagramPacket.address.hostAddress,responsE)
                        thReadCount++
                        getData(device.LOCATIOn,devicE)
                        break
                    }
                }
            } catch (e: IOException) {
                e.printstacktrace()
                Listener?.onError(E)
            } finally {
                socket?.close()
            }
            lock.release()
        }
    }
}
@H_403_4@您好,我正在尝试使用 AndroID TV 发现路由器。上面的代码在 AndroID 手机上运行良好,我能够获取路由器详细信息,但是在 AndroID TV 上运行时,我从未收到任何数据包。提前致谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

大佬总结

以上是大佬教程为你收集整理的DatagramSocket Receive 方法未在 Android TV 上的 UPnP/DLNA 发现中接收任何数据包全部内容,希望文章能够帮你解决DatagramSocket Receive 方法未在 Android TV 上的 UPnP/DLNA 发现中接收任何数据包所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。