请教个问题,我在写一个聊天程序,有一个协议是 
? 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");
}
}

解决方案 »

  1.   

    因为 pseud 一个经连接到服务器了,可是我有建立了 服务端
    ------------------------
    这是什么意思,请把问题描述清楚些,别人才能帮你
      

  2.   

    我只给你个思路,贴代码要贴的太长了。
    1.启动客户端B的循环监听(也就是为了和服务端连接的监听)
    2.客户端A发送消息给服务端
    3.服务端在监听线程里判断是否接收到客户端A的信息
    4.判断有信息,建立和客户端B相连接的客户端(NEW出来个客户端实例,怕麻烦就把客户端A写成可以替换IP,端口形式的客户端,直接传参数过去)
    5.通过新建立的客户端发送消息给服务端(也就是所谓的客户端B)
      

  3.   

    orig--->服务器---->pseud 分解成两个过程:
    1: orig(客户机)------->服务器
    2: 服务器(充当客户机)--------->pseud(充当服务器)你能实现第一个过程,那么第二个应该没有什么大问题,注意换个端口,不要搞混了。
      

  4.   

    我现在已经建立了 orig 与服务端的连接 (所有的代码都写好了,太长所以没贴出来), 在上面的代码里
     if((in1 = in(recieve))!=null){  这个是为了找用户名为 receive的是否存在于在线的用户名列表中,如果存在,就返回其 ip地址和端口 ,然后建立与 receive的连接 :
    client1 = new Socket(in1.getadr(),in1.getport()); 但是这里感觉不太对,client1应该已经和服务器建立了连接(所以才能找到它的ip和port),这里等于我又建立了一次连接,所以在我执行到这里的时候,就给我返回了 connexion refused , 不知道我说的对不对?我是否应该在类里面添加一个 list_socket用来加入所有在线的客户端,然后如果服务端要给他发送消息就直接 quest1.println("...")就可以了呢或者有更简便的方法可以直接对用那个 receive 的socket?
      

  5.   

    1 首先将2个客户端都连接到服务器上
    2 定义一个vector 用来存储客户端A发送的消息
    3 做一个循环判断如果vector里边有值的话 则读取并发送给客户端B