比如a客户端登陆服务器 显示a在线 b登陆显示 a b在线 同时a客户端应刷新列表 为 a b在线 依此类推
如果是c/s的,有人上线,服务端向所有用户广播,同时客户端开启一个线程去监听服务端发来的消息,然后你在刷新列表显示,或者让他的图标改成上线即可,如果是web的,写一个监听器监听session,页面ajax循即可,如果是第三方类库,比如smack,直接使用它提供的监听器即可,如果你想知道怎么实现的,看它的源码即可服务端向所有用户广播 怎样实现啊
如果是c/s的,有人上线,服务端向所有用户广播,同时客户端开启一个线程去监听服务端发来的消息,然后你在刷新列表显示,或者让他的图标改成上线即可,如果是web的,写一个监听器监听session,页面ajax循即可,如果是第三方类库,比如smack,直接使用它提供的监听器即可,如果你想知道怎么实现的,看它的源码即可服务端向所有用户广播 怎样实现啊
解决方案 »
- 急救JDBC问题
- for循环题目:求代码打印出下图。
- 如何实现每到整点时间调用一个方法
- read()的问题?
- 如何把一个路径目录下的所有文件的文件名读入到一个ArrayList里面?
- 请问javax中有mail包吗? 我用了论坛中一些大虾的sendmail的例子,在编译时出现javax.mail.*不能访问的错误,请问如何解决?
- JAVA有没有象C#的ISSUEVISION和TSKVISION这样的微软直接提供的带源代码的大型例程
- 我想打乱 class 文件防止被反编译,请问有哪些工具?
- 用什么方法可以让JAVA生成N多个乱七八糟的而且有些还带$符号的CLASS文件呢?
- 请问大家我想学java,有什么好的书吗?(有c基础)
- freemarker
- String.format("%f", h) 不设定小数位数格式化后显示小数位数为6位
import java.net.*;
import com.thread.*;
import com.tools.AddThread;
import com.tools.ThreadScoket;
import com.model.*;
public class TestServerSocket {
public static void main(String args[]){
try {
ServerSocket ss= new ServerSocket(9999);
while(true){
Socket s = ss.accept();
System.out.println("连接成功");
ObjectInputStream buf = new ObjectInputStream(s.getInputStream());
//ObjectOutputStream buw = new ObjectOutputStream(s.getOutputStream());
//BufferedWriter buw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
User user=(User)buf.readObject();
//读取客户端信息
System.out.println("用户登录"+user.getName());
ThreadScoket thread = new ThreadScoket(s);
System.out.println("test");
thread.run();
System.out.println("test2");
//AddThread.addSocket(user.getName(), thread);
//启动线程
//thread.notify();
}
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
}
}
import java.io.*;
import java.net.*;
import java.util.*;
import com.tools.*;
public class ThreadScoket extends Thread{
Socket s;
public ThreadScoket(Socket s){
this.s=s;
}
//通知其他线程 告知 s已被添加 并更新他们的客户端
public void notity(String s){
HashMap hm=AddThread.hashMap;
Iterator it=hm.keySet().iterator();
while(it.hasNext())
{
String id= it.next().toString();
try {
//取得与客户端的线程
//ObjectOutputStream oos=new ObjectOutputStream(AddThread.getSocket(id).getOutputStream());
//oos.writeObject(s);
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
}
}
public void run() {
while(true){
try {
//ObjectInputStream buf = new ObjectInputStream(s.getInputStream());
// ObjectOutputStream buw = new ObjectOutputStream(s.getOutputStream());
Thread.sleep(10000);
} catch (Exception e) {
// TODO: handle exception
}
}
}
}
import java.net.*;
import com.tools.*;
import com.model.*;
public class Client { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try { Socket s = new Socket("127.0.0.1",9999);
// BufferedReader buf = new BufferedReader(new InputStreamReader(s.getInputStream())); ObjectOutputStream buw = new ObjectOutputStream(s.getOutputStream());
User user=new User();
user.setName("b");
buw.writeObject(user);
System.out.println("客户端发生成功2");
//ThreadScoket th = new ThreadScoket(s);
//th.run();
//AddThread.addSocket(user.getName(), th);
} catch (Exception e) {
// TODO: handle exception
}
}}怎么客户端只能连一次 啊 那个服务器端的thread.run();关掉 就可以连多个 怎么回事