ObjectInputStream 是对象反序列化反之对象序列化是把对像读到内存里的

解决方案 »

  1.   

    我也是新手,不对的地方指教
    服务器不是每个线程分管一个客户端吗!直接用每个线程里的ObjectOutputStream转发,就不用new新的了,服务器新建线程的时候可以把线程存到MAP里,单聊就可以根据KEY(用户ID)取得相应的线程转发信息,群发的话就用MAP.values()取出全部的线程迭代,一个个转发;
      

  2.   

    群聊系统也是聊天系统,如果是我的话,我会先把消息发送到服务端,通过服务端转发给各个客户端。
    具体:
    当客户端向服务端发送Socket连接时,产生一个中间对象,拥有客户端和服务端的InputStream、OutputStream对象,并实现Runnable接口,然后把这个对象保存在服务端List中。
    每次通过这个中间对象进行交流,服务端还可以从List中选择消息的发送对象。
      

  3.   


    是啊,但是对于服务器上每个线程,那个线程里面的ObjectIO流两端所联系的只是服务器和那个线程所分管的客户端啊,这个线程没办法在不new出新Output流的情况下把他所管的客户端的消息传达给别人啊可不可以把收到的信息向上汇总给服务器,之后由另一个线程调度所有线程的send方法来分发不过貌似难度很大啊
      

  4.   

    解决了,感谢楼上各位!!!把所有的ObjectOutputStream扔进一个数组里,每次发送时将当前线程里的outputstream等于数组里的一个,发送,如此遍历数组之后再将outputstream改回来。
      

  5.   

    主要是发出的消息不能转发到其他人那里返回自己那里的是可以的[/quote用广播技术