Android 如何使用WiFi Direct从组所有者向多个客户端发送消息?

Android 如何使用WiFi Direct从组所有者向多个客户端发送消息?,android,wifi-direct,wifip2p,Android,Wifi Direct,Wifip2p,chatManagerclass 公共类ChatManager实现可运行{ 私有静态最终字符串TAG=“ChatHandler”; 私有套接字=空; 私人最终处理人; @Getter@Setter private boolean disable=false;//停止或启动chatmanager的属性 私有输入流是流; 私有输出流oStream; /** *类的构造函数 *@param socket表示通信所需的{java.net.socket} *@param handler表示通信所需的处理

chatManagerclass

公共类ChatManager实现可运行{
私有静态最终字符串TAG=“ChatHandler”;
私有套接字=空;
私人最终处理人;
@Getter@Setter private boolean disable=false;//停止或启动chatmanager的属性
私有输入流是流;
私有输出流oStream;
/**
*类的构造函数
*@param socket表示通信所需的{java.net.socket}
*@param handler表示通信所需的处理程序
*/
公共聊天管理器(@NonNull套接字,@NonNull处理程序){
this.socket=socket;
this.handler=handler;
}
/**
*方法来执行{socketmanagers.ChatManager}的线程
*要停止执行,请使用“.setDisable(true);”。
*/
@凌驾
公开募捐{
Log.d(标记“ChatManager已启动”);
试一试{
iStream=socket.getInputStream();
oStream=socket.getOutputStream();
字节[]缓冲区=新字节[1024];
整数字节;
//此方法的调用用于调用MainActivity中handleMessage的case Configuration.FIRSTMESSAGEXCHANGE。
handler.obtainMessage(Configuration.FIRSTMESSAGEXCHANGE,this).sendtotTarget();
而(!disable){/…如果启用
试一试{
//从输入流读取
如果(iStream!=null){
字节=iStream.read(缓冲区);
如果(字节==-1){
打破
}
//此方法的调用用于调用MainActivity中handleMessage的case Configuration.MESSAGE_READ。
获取消息(Configuration.MESSAGE_READ,字节,-1,缓冲区).sendToTarget();
}
}捕获(IOE异常){
Log.e(标签“断开”,e);
}
}
}捕获(IOE异常){
Log.e(标记“Exception:+e.toString());
}最后{
试一试{
iStream.close();
socket.close();
}捕获(IOE异常){
Log.e(标记“关闭套接字或isStream期间异常”,e);
}
}
}
/**
*方法在输出流上写入字节数组(可以是消息)。
*@param buffer byte[]数组,表示要写入的数据。例如,在byte[]中使用“.getBytes();”转换的字符串
*/
公共无效写入(字节[]缓冲区){
试一试{
oStream.write(缓冲区);
}捕获(IOE异常){
Log.e(标记“写入期间异常”,e);
}
}

}
用于同时与多台设备聊天的组所有者代码
。目前还不清楚该代码的作用,因为您没有告诉我们。谁可以与谁聊天?作为服务器的组所有者可以同时与多个设备聊天,但每次聊天一次。我想要的是从一个设备发送广播消息,并在所有连接的设备上接收广播消息。我应该创建一个数组并添加获取设备,但我不知道如何实现该代码。实际上,服务器必须创建一个数组列表,并将accept()语句的客户机套接字直接放在该accept()语句之后。如果服务器想要发送所有消息,服务器可以使用列表中的套接字。你可以用聊天管理器列表来代替套接字列表。你能告诉我怎么做吗?我真的不知道我怎么在谷歌上搜索了很多东西,没有什么我会在这个问题上添加聊天管理器和客户端句柄