日期:2014-05-20  浏览次数:20605 次

java做聊天室的问题
学完网络和多线,老师要求自己实现一个简单的聊天室,广播式的,一个人说话所有客户端都能看到,我想了一个办法,可是到现在都不能正常运行,请问我想的哪里有问题?有什么更好的方法:
我在server端用一个专门的线程SecritaryThread(主线程一启动就运行了这个),它专门用来维护一个LinkedList和一个List,LinkedList里装的是与客户端通信的多个线程共同写入的String,List里装的是各各Socket,然后我从LinkedList里取String,遍历List,给每个Socket都写一遍这个String

可是结果不我是我想要的,还出现了ClassCastException,因为我把List里的元素强转成了Socked,终端说不能把String转成Socket,我打印出来看了一下,明明是Socket,确说是String,真是莫名奇妙.

是不是我这个设计不好?通常这样的问题如何设计?

------解决方案--------------------
直接用一个map存放就可以了
服务器从客户端得到消息,就遍历整个map,向每个socket都发送个消息就可以了

如果你要看我有以前练习写的代码
------解决方案--------------------
好复杂啊`````
------解决方案--------------------
用观察者模式比较方便
------解决方案--------------------
很好做的
先写个SERVER端
加如多线程
线程中传输一个 套接字 Socket s
例如
class MyThread implements Runnable
{
Private Socket;
MyThread(Socket s)
{
this.s=s;
}
public void run()
{
/* 之间做客户端要做的事*/
}
}
------解决方案--------------------
http://acman.blog.hexun.com/6829175_d.html,不知这个合要求不?去年初学Java做的