提供相关资料或者讨论解决方案 --> 怎样维持Nat本次会话所分配的端口不变??,期待有经验的高人解答!!!!

jiudon 2005-06-12 11:23:01
问题:使用P2P打洞技术建立的连接,在使用该连接进行大文件传输的过程中经常出现中断地情况(接收方收不到发送方的数据),重新打洞即可!

现不希望“不断地”进行打洞,希望寻求一种能够维持住开始打洞所获得的双方Nat的本次会话(即端口),不知道有什么比较好的方法!!!

提出解决方案的或者提供相应资料的给高分!!谢过了先!
...全文
148 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiudon 2005-06-15
  • 打赏
  • 举报
回复
问题已经解决了,历时3天的调试也算告一段落,总结一下这个问题:

1、UDP打洞之后两个客户端的通讯,中间若有足够长的时间没有数据,并希望保持洞的有效的话,就要 使用心跳来维持本次会话的有效!

2、心跳的频率如fisker0303(Thinking In Love) ( ) 所述!
jiudon 2005-06-14
  • 打赏
  • 举报
回复
嗯,谢谢各位了,基本明白,等下就来揭帖!!
fisker0303 2005-06-14
  • 打赏
  • 举报
回复
TCP tunnel 是基于连接的,当然不会出现问题了,关键是楼主说通讯过程中可能会出现中断,中断之后,TCP tunnel也就没了吧。
fisker0303 2005-06-14
  • 打赏
  • 举报
回复
有大数据传输的时候,心跳包当然也就不需要了,但心跳包都很小的,对网络性能影响也不是很大,自己把握吧。

至于时间,我一般采用1分钟,基本已经足够了,安全一点30秒,10秒,怎么都行。
jiudon 2005-06-14
  • 打赏
  • 举报
回复
ding!!
hushuangyan74 2005-06-13
  • 打赏
  • 举报
回复
楼主水平高,值得学习!
jiudon 2005-06-13
  • 打赏
  • 举报
回复
有点疑惑,既然是P2P,楼主应该是通过UDP来实现的吧?
那么,它怎么还有连接与中断呢?

------------>

不好意思,用词不当了,呵呵,是UDP,我说的“连接”-》正在文件传输的过程;
“中断”-》文件传输的过程出现了中断;

原来没有做心跳,因为一旦文件开始传输,那么这两个端口之间就会不停地有数据来往
,再要心跳是不是多余?!

使用心跳有点疑惑:1、心跳时间要多久就基本能维持大部分的Nat的会话?

2、这种方式维持会话的效果怎样?(如果效果一般的话,还不如重新打洞!)

——————————————>回复人: qrlvls(空 气) ( ) 信誉:115 2005-06-13 11:17:00 得分: 0


如果 TCP tunnel 成功建立后应该不会出现这样的问题,因为如果心跳包不能维持的话应该不是 NAT 造成的结果

-------------->
那么像这样的大数据量的UDP传输,除了端口映射产生变化、网络真正的断开
还有什么原因会导致不能收到发送的数据阿?!?



younggle 2005-06-13
  • 打赏
  • 举报
回复
有点疑惑,既然是P2P,楼主应该是通过UDP来实现的吧?
那么,它怎么还有连接与中断呢?
UDP是无连接的,能且仅能通过心跳包的方式来维持连接,心跳包的丢包也无所谓,因为这包丢了,下包不一定会丢,来的包丢了,去的包不一定会丢,一般这种丢包无须验证,基本没有什么问题。

如果 TCP tunnel 成功建立后应该不会出现这样的问题,因为如果心跳包不能维持的话应该不是 NAT 造成的结果
qrlvls 2005-06-13
  • 打赏
  • 举报
回复
如果 TCP tunnel 成功建立后应该不会出现这样的问题,因为如果心跳包不能维持的话应该不是 NAT 造成的结果
fisker0303 2005-06-13
  • 打赏
  • 举报
回复
有点疑惑,既然是P2P,楼主应该是通过UDP来实现的吧?
那么,它怎么还有连接与中断呢?
UDP是无连接的,能且仅能通过心跳包的方式来维持连接,心跳包的丢包也无所谓,因为这包丢了,下包不一定会丢,来的包丢了,去的包不一定会丢,一般这种丢包无须验证,基本没有什么问题。
jiudon 2005-06-13
  • 打赏
  • 举报
回复
我也想使用“心跳包”来维持,但是该包如果也丢了怎么办? 况且,我现在地情况是:在传输数据的过程中(不停地有文件数据包传输)依然会断,那么使用心跳来维持还有意义么?

有没有达人使用这种机制做过项目阿?
jiudon 2005-06-13
  • 打赏
  • 举报
回复
我顶!!!!
kingzai 2005-06-12
  • 打赏
  • 举报
回复
这个本版以前有讨论过,
http://community.csdn.net/Expert/topic/3860/3860044.xml?temp=.7321894
http://community.csdn.net/Expert/topic/3139/3139485.xml?temp=6.694973E-03
可以考虑定时发送心跳包的方法维持这个session端口。

18,356

社区成员

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

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