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