winsock采用udp做点对点通讯。接收端通过Winsock1_DataArrival可以接收到数据。在DataArrival事件中我是这样处理的。收到信息后,使窗体上的一个标记闪动,通知用户有新消息。同时把收到的信息存入变量a中。现在遇到的问题是,当用户收到第一条消息后没有及时查看,当第二条消息发到的时候,变量a就被重新赋值了.第一条消息就没有了。怎么办啊。
高手给个思路,急~~~~~~~~~~~~~~

解决方案 »

  1.   

    yinbin最近老看到你。
    我做的这个是给我们OA系统中加的一个模块,主要用来发送消息和传送文件用的。
    而且聊天记录也需要保存。所以我改用数据库了。每次收到消息的时候我就把消息存入数库中,加上未读标记。
    然后通知另一个方法,此方法主要控制标记的闪动和读取数据。
    实现过程是这样的:先取出一条未读记录,取出的同时把此记录标记为已读。
    然后同时判断表中是否还有未读记录。如果有就递归以上操作,直到没有新记录为止。
    没想到挺简单的东东做起来这么麻烦。
      

  2.   

    加以个 ListView 提取消息
      

  3.   

    Garfield(猫仔)啥意思?说清楚一点。
      

  4.   

    我不明白你说的“控制窗体上的标记闪动就不好处理了”
    是什么意思如果说有多条信息未查看的话,就一直闪动,你可以按照这样的思路:
    读取一条信息,清空一个数组变量,然后检查一遍数组变量是否全为空,如果是,那就不闪了。否则就继续闪。我说的ListView意思是你可以自选要查看哪条消息,每个Item对应一条消息,选择一个Item就弹出一条消息,并删除该Item,直到ListView为空。
      

  5.   

    我做得是b/s的。所以我还是不用数组了。因为如果页面刷新了。数组变量就没有了。
    我改用数据库了。在每个客户端都会有一个access数据库。把消息存入,加已读或未读标记。