关于UDP动态IP问题,求大家帮帮忙

FangZongZuoGei 2014-06-20 10:08:08
服务器与客户机采用的是UDP协议,服务器是静态的IP,客户机是动态的IP,客户机通过路由能发送数据包到服务器,服务器如果马上回一包数据,这样是可以的,但是过一段时间,服务器再向客户机发送数据就不行了,我知道是路由把客户机IP封装了。我想知道UDP协议怎么样能解决这个问题??求大神帮帮忙,真的很急啊!,拜托了TCP协议是可以的!
...全文
638 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dreamzhouwei 2014-06-23
  • 打赏
  • 举报
回复
我觉得要是用UDP通信的话,应该采用客户端拉数据的方式。客户机应该以一定频度向服务端发送一包数据,服务端接收到数据后,如果有需要向客户机发送的数据,就发送。如果服务端需要向客户端发送数据,就先把数据放到缓存队列中,接收到客户机拉数据的指令后,再把缓存队列的数据发送到客户机。 客户端向服务端发送接数据指令的频度,简单的话可以固定频度。复杂的话可以根据数据大小,动态调整频度
  • 打赏
  • 举报
回复
客户端产生一唯一标识(例如guid) 服务端认唯一标识,不认ip地址 客户端定时向服务器发小包,至少应包含唯一标识,服务端更新客户端信息(ip地址和端口) 要想支持任意时刻服务器主动回包,那么小包定时间隔应控制在30秒左右或更短
oyljerry 2014-06-20
  • 打赏
  • 举报
回复
心跳包机制,客户端和服务端维持连接
fishion 2014-06-20
  • 打赏
  • 举报
回复
可以用定时的心跳包机制,让客户端定时发一个心跳数据包给服务器看看
bluesen 2014-06-20
  • 打赏
  • 举报
回复
实际上是动态端口,你可以看看端口打洞的文章。 你的客户端应该每10秒左右发送维持NAT的心跳包,几个字节就可以。 这样可以保持端口可用。 这些在voip类的应用中已成为常识了。
FangZongZuoGei 2014-06-20
  • 打赏
  • 举报
回复
引用
to fishion
不行,每次同一个客户端向服务器发送数据,每次端口号都是不一样的
引用
oyljerry
跟上面一样
引用
my3439955
我这个是通过路由啊,NAT是Symmetric NAT这种,每次同一个客户端向服务器发送数据,每次端口号都是不一样的 虽然没有得到答案,还是要谢谢你们的热心帮助!

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧