关于socket编写多用户聊天的一点疑惑,请高手指点~ ServerSocket.accept()会阻塞,然后每接受到客户端连接,该函数会返回一个Socket,一般都是利用这个Socket启动一个新的线程,然后在新的线程中处理每个用户的输入。如果想使用更好的技术,可以研究java.nio 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 to jinxfei(jinxfei):当ServerSocket启动了很多线程以后,这些线程是怎么样轮换来接收用户消息的呢? 用户发出的消息会在某个单独的线程中被收到,至于受到这些消息后怎么处理,应该是你的业务逻辑来决定。一般:ServerSocket ss=new ServerSocket(host, prot);Socket s=ss.accept();List clients=new ArrayList();Client c=new Client(s);c.start();//将客户端socket连接保存,以便将来进行消息发送。clients.add(c);class Client extends Thread{ Socket mySock; public Client(Socket s){ mySock=s; } public void run(){ BufferedReader r=new BufferedReader(new InputStreamReader(s.getInputStream())); String clientMsg=null; while ((clientMsg=r.readLine()!=null)){ //这里加入对客户端消息的处理。 } } 线程的轮换是jvm线程调度机制决定的,你不用关心。 新手问一个书上的练习题 ------------>如何对特定的字符串设置字体<------------ 解析properties报错啊!!!!!!!! 如何查看jdk中的源代码 新手 关于JTable的列宽度 linux下jni的问题 java图形界面的分隔问题 GB2312编码2个高位都是1,那GBK呢? 关于Jtable编辑后保存的问题????? applet装载的时候如何让它显示进度条? 小弟遇到一个奇怪的问题,不知哪位大哥能给解答一下
ServerSocket ss=new ServerSocket(host, prot);
Socket s=ss.accept();
List clients=new ArrayList();
Client c=new Client(s);
c.start();
//将客户端socket连接保存,以便将来进行消息发送。
clients.add(c);class Client extends Thread{
Socket mySock;
public Client(Socket s){
mySock=s;
}
public void run(){
BufferedReader r=new BufferedReader(new InputStreamReader(s.getInputStream()));
String clientMsg=null;
while ((clientMsg=r.readLine()!=null)){
//这里加入对客户端消息的处理。
}
}