如何在VB.NET中使用SSDP搜索在网络上找到Roku IP +端口

时间:2018-05-03 00:01:09

标签: vb.net roku ssdp

我正在尝试在我的网络上找到 Roku TV ,显然它需要基于Roku API help的某些SSDP发现,但是,我无法使用任何一个搜索我的设备Nuget图书馆。

我遇到ssdpradar并且能够通过Visual Studio 2017社区版本安装Visual Studio(VB.NET)的Nuget包。但是,我无法找到有关如何使用它的任何文档。

任何建议都会有所帮助。

解决方案:

我找到了一个解决方案但不是 ssdpradar 而是RSSDP。在项目中添加块后,您可以使用以下代码行获取所有设备,然后从该列表中找到Roku位置(ip +端口)。

Imports Rssdp

For Each founddevice As DiscoveredSsdpDevice In founddevices.Result
    If founddevice.Usn.Contains("roku:ecp") Then
        Rokulocation = founddevice.DescriptionLocation.ToString()
        Exit For
    End If
Next

1 个答案:

答案 0 :(得分:0)

我最近成功使用了一个名为RokuDotNet的库。它是用C#编写的,但您可以将其作为项目加载到解决方案中,并从VB.NET中引用它。

这大致就是我使用它的方式:

Imports RokuDotNet.Client

Public Class Form1
    Private _discoveryClient As RokuDeviceDiscoveryClient

    Public Sub New()
        _discoveryClient = New RokuDeviceDiscoveryClient
        AddHandler _discoveryClient.DeviceDiscovered, AddressOf DiscoveryHandler
    End Sub

    Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
        _discoveryClient.DiscoverDevicesAsync()
    End Sub

    Private Async Sub DiscoveryHandler(sender As Object, e As DeviceDiscoveredEventArgs)
        If InvokeRequired Then
            BeginInvoke(New Action(Sub() DiscoveryHandler(sender, e)))
            Return
        End If

        ' Get the display name for the device (if the user entered one when setting it up)
        Dim deviceInfo = Await e.Device.Query.GetDeviceInfoAsync
        Dim name = deviceInfo.UserDeviceName
        If String.IsNullOrEmpty(name) Then
            name = deviceInfo.ModelName
        End If
        AddDevice(e.Device, name)
    End Sub

    Private Sub AddDevice(device As RokuDevice, name As String)
        ' Your code here
    End Sub
End Class

您可能希望在该异步函数中围绕await添加try / catch,以便在出现网络问题时显示错误。