怎么能够实现将一个客户端发送到服务端的消息转发到另一个客户端?
请教个问题,我在写一个聊天程序,有一个协议是
? SEND orig pseud message
意思是 orig 是发送消息端的用户名 , pseud 是 接受端 的用户名,
当服务器接收到 ?SEND 就把得到的 message 发送到 pseud 客户端
下面是为我些的一段片段,感觉肯定不对,因为 pseud 一个经连接到服务器了,可是我有建立了 服务端 , 所以执行的时候 就告诉我 coonexion refused , 各位高手来看看怎么解决阿,挺急着用的,谢谢了
class info{
private int port;
private InetAddress adr;
info(int p , InetAddress adr){
port = p;
this.adr = adr;
}
info(){};
else if(m1.getNthValue(0).getStringValue().equals( "SEND ") && m1.getValue().getLength()==4) {
String sender = m1.getNthValue(1).getStringValue();
String receive = m1.getNthValue(2).getStringValue();
String p = m1.getNthValue(3).getStringValue();
info in1 = new info();
Socket client1;
if((in1 = in(recieve))!=null){ //在list_quest里找符合条件的用户,并返回 info 如果没有返回 null
client1 = new Socket(in1.getadr(),in1.getport());//建立与接受端的连接
PrintWriter out1 = new PrintWriter(client1.getOutputStream(),true);
out1.println(phrase+ "\n ");
out.println( "! SENDACK ");
}
else{
out.println( "! SENDNAK ( " + recieve+ ") not in ligne ");
}
}
------解决方案--------------------因为 pseud 一个经连接到服务器了,可是我有建立了 服务端
------------------------
这是什么意思,请把问题描述清楚些,别人才能帮你
------解决方案--------------------我只给你个思路,贴代码要贴的太长了。
1.启动客户端B的循环监听(也就是为了和服务端连接的监听)
2.客户端A发送消息给服务端
3.服务端在监听线程里判断是否接收到客户端A的信息
4.判断有信息,建立和客户端B相连接的客户端(NEW出来个客户端实例,怕麻烦就把客户端A写成可以替换IP,端口形式的客户端,直接传参数过去)
5.通过新建立的客户端发送消息给服务端(也就是所谓的客户端B)
------解决方案--------------------orig---> 服务器----> pseud 分解成两个过程:
1: orig(客户机)-------> 服务器
2: 服务器(充当客户机)---------> pseud(充当服务器)
你能实现第一个过程,那么第二个应该没有什么大问题,注意换个端口,不要搞混了。
------解决方案--------------------1 首先将2个客户端都连接到服务器上
2 定义一个vector 用来存储客户端A发送的消息
3 做一个循环判断如果vector里边有值的话 则读取并发送给客户端B