java中的RMI聊天程序-如何将mesage从客户端发送到客户端(而不是通过服务器)?

java中的RMI聊天程序-如何将mesage从客户端发送到客户端(而不是通过服务器)?,java,client-server,rmi,Java,Client Server,Rmi,我无法让客户端在不通过服务器的情况下向另一个客户端发送消息。这是一个义务学校项目,应该像那样实施。如果有人能帮助我,我将不胜感激 服务器接口: 导入java.rmi.Remote; 导入java.rmi.RemoteException; 导入java.util.ArrayList; 导入java.util.List; 公共接口ChatServerInt扩展了远程{ 公共抽象无效寄存器(chatclient inClient)引发RemoteException; 公共抽象chatclient[]

我无法让客户端在不通过服务器的情况下向另一个客户端发送消息。这是一个义务学校项目,应该像那样实施。如果有人能帮助我,我将不胜感激

服务器接口:

导入java.rmi.Remote;
导入java.rmi.RemoteException;
导入java.util.ArrayList;
导入java.util.List;
公共接口ChatServerInt扩展了远程{
公共抽象无效寄存器(chatclient inClient)引发RemoteException;
公共抽象chatclient[]getClients()引发RemoteException;
公共无效断开连接(ChatClientClient)引发RemoteException;
} 
服务器实现:

导入java.rmi.Naming;
导入java.rmi.RemoteException;
导入java.rmi.server.UnicastRemoteObject;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.Random;
公共类ChatServerImp扩展了UnicastRemoteObject实现了ChatServerInt,可运行{
私有聊天客户端[]客户端列表;
int计数器=0;
私有ArrayList ConnectedClient;
/**
*所有已注册远程客户端的列表。
*/
私有列表客户端=null;
/**
*构造聊天服务器的实例。
*/
public ChatServerImp()引发RemoteException{
//初始化客户端对象列表。
clients=newarraylist();
connectedClients=newarraylist();
clientList=new-chatclient[16];
}
/**
*注册聊天客户端。
*/
公共无效寄存器(ChatClientInclient)引发RemoteException{
//进行注册。
已同步(客户端)
{
客户。添加(包括);
clientList[counter++]=inClient;
inClient=new ChatClientImp();
对于(int i=0;i
使用RMI可以做到这一点的唯一方法是,如果客户端也是RMI服务器,并且以某种方式相互发送存根。

请帮助我了解任何想法。提前感谢问题是您的客户端线程应该使用您在
main()
方法中查找的服务器,而不是在
run()
方法中实例化服务器。谢谢。客户机都在rmi服务器上注册。我不知道如何传递存根,或者如何在不经过服务器的情况下将消息从一个客户端发送到另一个客户端server@lyemwen客户端可以从服务器获取另一个客户端的存根。这只是另一种远程方法。但是除非所有的客户端都在同一个防火墙后面,否则它不会工作。