求实现方法,请同学们赐教

kirto 2013-03-16 11:13:29
=。=练习中遇到了这样的问题,要实现在客户端管理界面实时更新
当前在线人的ID,昵称,上线时间,在线时就显示,,有好的实现方法么
...全文
177 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
小蝸牛 2013-03-19
  • 打赏
  • 举报
回复
楼主可以看下socket的知识。
kirto 2013-03-19
  • 打赏
  • 举报
回复
http://blog.csdn.net/sjf8013/article/details/7693669 有偏好文章,问题解决了,谢谢同学们的帮忙
kirto 2013-03-19
  • 打赏
  • 举报
回复
=.=原来是线程吧界面卡死了。。。。。。怎么办呢
失落夏天 2013-03-18
  • 打赏
  • 举报
回复
数据库里面添加一个标志位,上线就给改为true,然后再读取数据,下线的时候改为false.
kirto 2013-03-18
  • 打赏
  • 举报
回复
没人吗
kirto 2013-03-18
  • 打赏
  • 举报
回复
我是想问动态添加jlabel的方法啦,还有我发现ManageSurface开启,按下启动按钮后,好像卡死了一样没反应了,缩小再放大就是黑了。。。
suciver 2013-03-18
  • 打赏
  • 举报
回复
竟然你用同步的方式了,那你在服务端监听到一个socket连接上来的时候就可以循环你的ManageClient这里面的所有当前连接的socket,往这每个socket去输出这个刚连接上来的用户信息不就完了,其实就是个群发信息而已
shine333 2013-03-17
  • 打赏
  • 举报
回复
1 最原始的方法,页面上放一个定时执行的JS,自动AJAX获取 2 长连接,comet(需要服务器支持,而且也不是所有浏览器都能正常工作)
kirto 2013-03-17
  • 打赏
  • 举报
回复
不好意思,可能我说的不够详细吧,。。。我只是写了个聊天的小程序,服务器管理界面我用一个jframe来写, 我想在里面的一个jpanel中动态添加jlabel,来表示一个用户上线 package com.qq.model; //QQ服务器 import java.awt.*; import java.io.*; import java.util.*; import java.net.*; import com.QQ_project.common.Message; import com.QQ_project.common.User; import com.qq.tool.CheckUser; public class QQServer { ManageClient mc=new ManageClient(); Message message=new Message(); public QQServer(){ try { ServerSocket serverSocket=new ServerSocket(9999); //等待连接 System.out.println("服务器正在监听"); //循环接收 while(true){ Socket socket=serverSocket.accept(); ObjectInputStream oisInputStream=new ObjectInputStream(socket.getInputStream()); User user=(User)oisInputStream.readObject(); ObjectOutputStream oos=new ObjectOutputStream(socket.getOutputStream()); //这里验证账号密码 if(new CheckUser().check_ID_Password(user.getId(), user.getPassword())){ message.setMes("1"); oos.writeObject(message); //启动线程 Server_Client serverclient=new Server_Client(socket); mc.addThread(user.getId(),serverclient ); serverclient.start(); //把用户显示在服务器列表 new ShowUser_Thread().show(user.getId()); //单开一个线程,让客户端保持通讯 //通知其他在线用户,该用户上线 serverclient.onlinekonw(user.getId()); }else { message.setMes("2"); oos.writeObject(message); socket.close(); } } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } -------------------------------------------------------------------------- package com.qq.model; import java.sql.ResultSet; import javax.swing.JLabel; import com.qq.surface.ManageSurface; import com.qq.tool.Get_User_Name; import com.qq.tool.ManageId_Name; import com.qq.tool.SQL_Helper; //用于获取当前上线 //的用户,并显示到ManageSurface public class ShowUser_Thread { public void show(String uid){ Get_User_Name gun=new Get_User_Name(); String id=uid; String name=gun.Get_Name(uid); JLabel showLabel=new JLabel(id+"--------------"+name); ManageSurface.addLabel(showLabel); //关闭相关的连接 } } ------------------------------------------------------------------------- package com.qq.surface; import javax.swing.*; import javax.swing.border.Border; import javax.swing.text.html.HTMLDocument.Iterator; import com.qq.model.QQServer; import com.qq.tool.ManageId_Name; import java.io.*; import java.util.HashMap; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.*; public class ManageSurface extends JFrame implements ActionListener{ /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub ManageSurface manageSurface=new ManageSurface(); } //定义组件 JPanel jp1; JButton star_jb,close_jb; public static JPanel showUser; JScrollPane jsp; ManageId_Name min=new ManageId_Name(); HashMap hmMap=min.hm; public ManageSurface(){ jp1=new JPanel(); star_jb=new JButton("开启服务器"); star_jb.addActionListener(this); close_jb=new JButton("关闭服务器"); jp1.add(star_jb); jp1.add(close_jb); showUser=new JPanel(); jsp=new JScrollPane(); jsp.add(showUser); this.add(jp1,BorderLayout.NORTH); this.add(jsp,BorderLayout.CENTER); this.setSize(500,400); this.setVisible(true); } //该方法用于动态添加JLabel public static void addLabel(JLabel jl){ JLabel userlJLabel=jl; userlJLabel.setVisible(true); System.out.println("方法正在被调用"); showUser.add(userlJLabel); showUser.repaint(); } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getSource()==star_jb){ new QQServer(); } } } 有关的代码就像这样,能力不够,写的不好,不要见怪,请大大们不吝赐教 还有个小问题,就是我吧ManageSurface最小化后再打开就变黑了,这是怎么回事呢??

51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧