【问题标题】:Connecting windows Winform app with Android tablets on same network将 windows Winform 应用程序与同一网络上的 Android 平板电脑连接
【发布时间】:2015-12-19 07:44:51
【问题描述】:

我正在尝试在 LAN 或 WLAN 上查找 winform 应用并将其与 Android 平板电脑连接。

我在 android 上实现了一个 tcp 服务器,它正在监听端口,并等待请求。

然后我尝试实现 Winform 应用程序,该应用程序应通过向此平板电脑发送请求并检查响应来尝试扫描网络以查找此平板电脑。

我停留在第二部分,如何检查网络并有效地向该端口发送请求?我需要找出平板电脑的 ip 才能连接它们。

我找到了这段代码: NetworkBrowser

但它会检查网络上的 PC,但不会显示 Android 平板电脑。

我想到的第一个解决方案是实现 web 服务,它将从 android 接收,PC 将定期请求并获取平板电脑的 IP。仍然不是那么有效的解决方案。

【问题讨论】:

  • 你试过这个吗:stackoverflow.com/q/13198669/1207195?看起来很有希望。顺便说一句,您可以手动枚举 IP 空间(并行!)尝试连接到您的 Android TCP 服务器。你甚至可以设置一个短暂的超时,当它失败时,嗯......这不是一个运行你的应用程序的安卓设备。对于小型网络,它不会花费太长时间(我猜大约 30/40 秒)。

标签: c# .net winforms


【解决方案1】:

一种可能性可能确实是网络服务。然后,您可以让 android 设备订阅和取消订阅以了解谁已连接。客户端通常比其他方式更容易寻找服务器。 您可以设置一个阈值,例如5 分钟,如果在此期间设备未更新其订阅,则将其标记为无响应,您可以尝试再次访问它或忘记它是在服务器端订阅的。 您可以在这里找到如何使用 WCF Web 服务的示例:

在网络方面,我建议检查这是否不是您的路由器造成的问题。有时,如果您有默认设置,某些端口可能会被阻止,需要在路由器配置中解除阻止。 为此,我推荐一个类似 nmap 的工具:

您只需要知道设备 ip 即可扫描打开的端口。在我的情况下,我在 Settings > Wifi > Advanced > 在底部找到了它,您可以看到您的 Wifis MAC 和 IP(Android 6.0.1,Nexus 5)

【讨论】:

  • 同一个项目可能会在不同的地方使用,所以订阅过程会产生很大的开销,使用用户名和密码登录PC的用户,订阅平板电脑和安全的东西都会出现。我试图逃避这个解决方案
  • 技术上你是对的。但是 WCF 提供了内置的用户和/或设备身份验证机制。(msdn.microsoft.com/en-us/library/ff405740.aspx) 你不想自己动手。 WCF 的另一个优点是 web 服务也可以被不同的平台使用。也许您需要稍后将其移植到独立版本或 iOS,然后您已经有了 bakcend。根据我的经验,对 Web 服务的身份验证/注册是可以忽略不计的开销(我自己在一个由 500 多个并发客户端连接到单个异地服务器的系统中尝试过)
  • 谢谢。由于我对 Web 服务没有很好的了解,所以我试图远离它。但它是更好的解决方案,甚至可以在后期跟踪项目。仍然找不到好的教程来轻松开始登​​录过程,如果您添加更多有关登录和 Web 服务的资源,那就太好了。 (正如我在您发布的教程中看到的那样,网络服务是否有像普通网站一样的会话?)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-23
  • 1970-01-01
  • 2012-02-25
  • 1970-01-01
相关资源
最近更新 更多