gpt4 book ai didi

Android 无线直连 : How to send data from Group Owner to the clients?

转载 作者:行者123 更新时间:2023-11-29 00:08:01 24 4
gpt4 key购买 nike

我在使用 wifi direct 时遇到问题。我设法连接了 2 台设备并将数据从客户端发送到群主,因为群主 ip 是每个人都知道的。我还设法找出客户端的 IP 并将其传递给组所有者,但我无法将数据从组所有者发送到客户端,即使它应该是对称的。我使用 IntentstartService() 发送数据,使用 AsynkTask 接收数据。仅使用 2 台设备,我注意到客户端 IP 始终相同 (192.168.49.10),因此我手动将其指定给 intent。

这是我尝试为所有者创建发送者和为客户创建接收者的方法:

 @Override
public void onConnectionInfoAvailable(final WifiP2pInfo info) {

// InetAddress from WifiP2pInfo struct.
InetAddress groupOwnerAddress = info.groupOwnerAddress;
connected = true;
ownerIP = groupOwnerAddress.getHostAddress();
// After the group negotiation, we can determine the group owner.
if (info.groupFormed && info.isGroupOwner) {
Toast.makeText(MainActivity.this, "I'm the owner!!", Toast.LENGTH_SHORT).show();
owner = true;
// Do whatever tasks are specific to the group owner.
// One common case is creating a server thread and accepting
// incoming connections.
Intent serviceIntent = new Intent(MainActivity.this, OwnerSender.class);
serviceIntent.setAction(OwnerSender.ACTION_SEND);
serviceIntent.putExtra(OwnerSender.EXTRAS_CLIENT_ADDRESS,"192.168.49.10");
serviceIntent.putExtra(OwnerSender.EXTRAS_CLIENT_PORT, 8988);
startService(serviceIntent);
//new OwnerReceiver(this).execute(); // owner riceve dai client sulla porta 8988
} else if (info.groupFormed) {
// The other device acts as the client. In this case,
// you'll want to create a client thread that connects to the group
// owner.
/*Intent serviceIntent = new Intent(MainActivity.this, ClientSender.class);
serviceIntent.setAction(ClientSender.ACTION_SEND);
serviceIntent.putExtra(ClientSender.EXTRAS_GROUP_OWNER_ADDRESS,ownerIP);
serviceIntent.putExtra(ClientSender.EXTRAS_GROUP_OWNER_PORT, 8988);
startService(serviceIntent);*/
new ClientReceiver(this).execute(); // i client ricevono dall'owner sula porta 8989
Toast.makeText(MainActivity.this, "I'm a client...", Toast.LENGTH_SHORT).show();
Toast.makeText(MainActivity.this, "Server IP: " + groupOwnerAddress.getHostAddress(), Toast.LENGTH_SHORT).show();
}
}

此方法在建立连接时启动,所有者应启动服务以发送数据,但该服务永远不会启动。我已经说过,如果在客户端使用相同的服务并且数据从客户端正确传输到所有者,则相同的服务会启动。

最佳答案

正如 Laszlo Magyar 所说,您需要先向服务器发送一条空消息,以便服务器可以使用客户端套接字获取传入的 ip 地址。

我的解决方案是从客户端向服务器发送一个字符串,这样服务器就可以知道客户端的 ip 地址,其余过程是相同的。

关于Android 无线直连 : How to send data from Group Owner to the clients?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32359071/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com