我要实现的是一个p2p,UDP聊天的程序,是这样的,我在客户端记录一个列表A,里面存放有各用户的信息(包括其ip,prot当然,这是它连接到服务器的信息),我直接向这个地址发送信息,它肯定是收不到的(NAT)的原因.之后我又增加了一个列表B,又来存放已经与本地用户建立P2P连接的用户的信息,每一次更新在线用户状态时,都会去更新这个列表.
发送消息时是这样的:
  先在列表B中判断对方是否存在
  if(不存在)
  {
     需要向对方打洞,并发送打洞消息
     while(等待次数 > 0)
     {
        if(收到打洞消息)
           break;
     }
     if(没有收到打洞成功的消息)
        对方拒绝接收数据,不发送给对方
  }
  else
  {
     利用列有B中的IP信息更新当前用户的IP信息,并发送给对方
  }这个算法看上去好像没有什么大问题,一开始时是双方是可以聊天的,而且也可以收到消息,但是一段时间没有聊后,消息就发不出去了。。怎么办呀?急需解决,等待中................