请选择 进入手机版 | 继续访问电脑版
尚学堂集团旗下品牌:尚学堂速学堂百战程序员云数学院[切换校区]
     在这个项目中,用到的技术有多线程,网络编程,io,xml解析和swing。
     1.在多线程支持多个客户端同时登陆时,面临的第一个问题就是客户端之间多个页面来回切换,且不断开socket通信。解决方案是每new一个界面,在其构造方法中将之前的socket传递给下一个界面。

     2.第二个问题是重复登录问题,首先想到的是在server端,每和一个客户端建立连接后将其用户名或者唯一ID,添加到server类中唯一的今天列表list中。当这个客户端正常退出时,在其while(true)中的read操作时,会报一个Exception,将其捕获,并提醒为:一个客户端已退出,然后删除list中的id。可是这样会遇到一个bug,每当用户登录时就已经和服务器建立了链接,如果此时密码输入错误导致登录失败,而恰好此时登录的用户又是已经登录的用户,那么,list会将之前正常登录的list中该用户误删除。解决方案是,将链接服务器的操作添加到登录按钮事件中,没登录一次链接一次,登录失败,在正常退出之前,就向外抛出SocketException,让其不会误删除之前list中存放的已在线的用户。

     3.swing界面中的组件毫无关联,同一添加到contentPane中显示,要再构造方法中先创建后new时显示,而传统的html分页时很容易完成,当前页有多少,就new多少个存放显示内容的标签,根据一些简单的逻辑,处理换页显示,数据可查询。而swing中不可以这样,这就要求你在毫无规律的四个组件中根据实际情况手动的设置其visiable的可见性。但组件多的情况先显然不可以一个一个设置,而是要用到循环。怎么让很多个毫无规律的组件中找到规律呢?解决方案:没有规律,那就让他们强行有规律,在初始化后,分别将他们的引用放入对应的数组中,循环赋值,设置可见性。(后续如有更好的方法来补充!我想也不可能再研究swing了0.0)

分享到 :
人收藏 回复 使用道具
2 条回帖
祝文华  金牌会员 | 2017-9-3 12:33:59
厉害厉害
回复 使用道具
bjsxt_zhang  金牌会员 | 2017-9-4 09:06:29
回复 使用道具
*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部

有位老师想和您聊一聊