1

我需要实现连接到同一个 WiFi AP 的所有设备之间的通信。我正在使用 Google Nearby Connections API。我能够连接到多个设备并进行通信。但由于一些问题连接丢失。我检查了谷歌文档,它建议“当设备连接到主机时,它可能会向其他客户端设备发送消息。”

https://developers.google.com/nearby/connections/android/manage-connections

我的疑问是“它可能会向其他客户端设备发送消息”是什么意思。

如果多个客户端设备连接到主机设备,那么客户端设备如何向其他客户端设备发送消息?

4

2 回答 2

1

使用 Nearby Connections API 时的连接在以下情况下丢失

  • 您或其他设备与 wifi 断开连接
  • 您和其他设备连接到不同的 wifi 网络(请记住,您是在本地网络上工作的 Nearby Connection,如果您想通过不同的网络发送消息,请使用 Nearby Message API)
  • 即使其中一个设备中的应用程序被最小化、关闭(销毁)等,连接也会丢失

所以我认为你应该记录其中一些案例。

“它可能会向其他客户端设备发送消息”

开发者页面意味着当主机响应连接请求时可以发送连接状态(接受、拒绝等)。

如果多个客户端设备连接到主机设备,那么客户端设备如何向其他客户端设备发送消息?

而且,如果连接了多个设备,您可以将您的消息(或者我应该说数据)发送到主机,该主机会将相同的数据发送到与其连接的所有客户端(这就是大多数主机客户端系统的工作方式)。

我希望它有帮助

于 2016-06-17T13:03:08.317 回答
1

我从未尝试过,但似乎您可以在客户Nearby.Connections.getLocalEndpointId()端设备上获取客户端 endpointId。不确定这如何帮助向其他客户端发送消息,因为主机无论如何都知道 Client-EndpointIds ......

但是,作为概念证明,您可以执行以下操作:

在主机中:

String payload = client2EndpointId;
Nearby.Connections.sendReliableMessage(mGoogleApiClient, client1EndpointId, payload);

在客户端 1 中:

@Override
public void onMessageReceived(String endpointId, byte[] payload, boolean isReliable) {
    String client2EndpointId = (String) payload;
    Nearby.Connections.sendReliableMessage(mGoogleApiClient, client2EndpointId, messageFromClient1ToClient2);
}

在 Client2 中:

@Override
public void onMessageReceived(String endpointId, byte[] payload, boolean isReliable) {
    String messageFromClient1 = (String) payload;
}

Host 将 client2 的 EndpointId 作为消息发送给 client1。然后,Client1 使用此 endpointId 向 client2 发送消息。

于 2015-12-04T08:32:30.650 回答