我正在尝试在我的网络上找到 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
答案 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,以便在出现网络问题时显示错误。