【问题标题】:how to connect to users that are connected to the same local network and share information between them in an android app如何连接到连接到同一本地网络的用户并在 Android 应用程序中在他们之间共享信息
【发布时间】:2019-03-27 04:46:33
【问题描述】:

我一直在网上搜索有关如何开始编写此代码的某种解释,但我没有找到任何东西。我知道java中的端口和流以及基本的网络东西,但我似乎找不到任何资源来描述如何将其转换为android。我查看了 android api (https://developer.android.com/training/connect-devices-wirelessly/) 但实际上我不明白上面写的任何内容。

回到问题。该应用程序只需执行以下基本功能:

  • 连接到同一网络的两个或更多人打开该应用
  • 打开时,该应用会自动扫描连接到同一网络且已打开该应用的所有手机
  • 然后,该应用程序将在屏幕上(在活动主界面中)显示每部打开该应用程序连接到同一网络的手机的名称作为一个简单的数组(手机的名称只是猜测的蓝牙名称)

这个问题可能太复杂而无法回答,所以如果有任何资源,如视频、api 等,描述这个过程会很棒

【问题讨论】:

  • 欢迎来到 Stack Overflow。我建议你把它分解成更小的部分,并单独处理每一部分。首先,您需要了解 Android 编程的基础知识。从一个基本的 Hello, World 开始!应用程序。然后添加一些基本网络通信的功能。在您遇到困难的每一步,将当前任务分解成更小的部分。无论语言或平台如何,这都是作为程序员发展的一项基本技能。

标签: java android networking local p2p


【解决方案1】:

NsdManager 将满足您的所有要求。您必须首先使用 IP 和端口通过 NsdManager 在网络上注册服务。然后从另一端发现并解析该服务。

https://developer.android.com/reference/android/net/nsd/NsdManager

https://android.googlesource.com/platform/development/+/master/samples/training/NsdChat/src/com/example/android/nsdchat/NsdHelper.java

【讨论】:

  • 谢谢!就一个问题。对于 public void onServiceFound(NsdServiceInfo service) 方法,究竟什么是服务?与 service.getServiceName() 一样,它是否返回连接到同一网络的另一部手机的名称?如果没有,那么如何实现呢?
  • 注册服务时必须设置 nsdServiceInfo.setServiceName(Build.MODEL); nsdServiceInfo.setServiceType(_somestring._tcp.);
  • 在 OnServiceFound 中你必须调用 reolveService 来获取 serviceInfo 的所有元数据。 mNsdManager.resolveService(serviceInfo, new NsdManager.ResolveListener()
猜你喜欢
  • 1970-01-01
  • 2013-07-24
  • 1970-01-01
  • 1970-01-01
  • 2019-05-10
  • 2021-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多