今天又因为出现莫名其妙的问题而郁闷了一个晚上

       从晚上6点半开始调试程序,关于毕业设计的CSCW系统中客户端在线用户用户的刷新,现在虽然程序已经可以正常运行了,但还是不知道为什么错,根本就是见鬼!!!

       CSCW系统,当用户登录到服务器时,更新服务器端的数据库中用户的在线状态,然后再从数据库中查找出所有的在线用户,再发给所有的在线用户。服务器和客户端之间的通信是通过socket+对象输入/输出流,昨天的错误让我调试了12个钟头,今天的错误调试6个钟头。。。。

     程序中的错误:当用户A登陆时,服务器更改数据库中A用户的在线状态,然后读取所有的在线用户信息。并发给所有用户,当然,这个包括A用户本身。当A用户成功登陆时,就为A用户建立一个监听线程,监听从服务器上发过来的消息。其中,在线用户信息就是通过这个监听线程显示在客户端的界面上的。当只有一个用户A登陆时(即只有管理员在),那么在线用户列表在A的面板上正确显示。如果这时有个用户,B登陆时,那么服务器也将更新数据库中B用户的在线状态,在把数据库中的在线状态用户发给A和B本身。这时问题出现了,A用户和B用户都能接收到相同的在线用户消息,但是在提取在线用户的用户名时,A用户始终看不到B客户,而B客户又能看到A客户。通过测试,我发现A用户和B用户接收到的在线用户消息时一样。如果再又一个用户C登陆时,C可以看到A和B用户,但A、B用户看不到C登陆了,B用户也看不到A用户。明明所有的客户端都接收到相同的在线用户信息,并且所有客户端的监听线程是一样的。这真的是见鬼了。刚开始,我使用java.awt.list来存储在线用户的名字,以为是因为这个问题,又改成用vector,但结果都一样,程序在算法上肯定没问题,好像是因为使用了list和vector才会这样,如果是String对象,一切正常。最后我想到了使用StringBuffer来存储用户名,中间使用“:”来分隔,结果正确了。不知道这是因为程序的问题还是jdk的问题,搞不懂。。。。

      今天的任务只完成了一半。还得抓紧时间,聊天功能实现了,现在进入关键时刻,文本操作得一致性控制。希望能在两天的时间做完。。。然后做图形的一致性控制。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值