symmetric NAT 如何穿越

zhou25tao 2009-01-05 12:38:55
请问p2p如何穿透symmetric NAT,现在有没有更好的解决方案,当然不是使用代理服务器,还有其他的nat穿透方法,如果那位大哥有源代码的话,共享一份给我吧,我的油箱是zhou25tao@tom.com
...全文
197 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
romandion 2009-05-12
  • 打赏
  • 举报
回复
关注,理论上应该不好处理。
pathuang68 2009-05-12
  • 打赏
  • 举报
回复
向牛人致敬,想大侠学习!
zhou25tao 2009-05-12
  • 打赏
  • 举报
回复
还是不要去想了.用超级节点的方式解决吧.在整个internet里面发展一些性能比较好的终端作为超级节点.
帅得不敢出门 2009-01-06
  • 打赏
  • 举报
回复
up
星羽 2009-01-05
  • 打赏
  • 举报
回复
P2P之UDP穿透NAT的原理与实现(附源代码)
http://www.ppcn.net/n1306c2.aspx
星羽 2009-01-05
  • 打赏
  • 举报
回复
waizqfor 2009-01-05
  • 打赏
  • 举报
回复
HTTP Tunnel 的例子

// You need to connect to mail.yahoo.com on port 25
// Through a proxy on 192.0.1.1, on HTTP Proxy 4480
// CSocketClient is Socket wrapping class
// When you apply operator << on CString, it writes CString
// To Socket ending with CRLF
// When you apply operator >> on CString, it receives
// a Line of response from socket until CRLF


try
{
CString Request,Response;
CSocketClient Client;

Client.ConnectTo("192.0.1.1",4480);

// Issue CONNECT Command
Request = "CONNECT mail.yahoo.com:25 HTTP/1.0";
Client<<Request;

// Issue empty line
Request = "";
Client<<Request;

// Receive Response From Server
Client>>Response;

// Ignore HTTP Version

int n = Response.Find(' ');
Response = Response.Mid(n+1);

// Http Response Must be 200 only
if(Response.Left(3)!="200")
{
// Connection refused from HTTP Proxy Server
AfxMessageBox(Response);
}


// Read Response Lines until you receive an empty line.
do
{
Client>>Response;
if (Response.IsEmpty())
break;
}while (true);


// Coooooooool.... Now connected to mail.yahoo.com:25
// Do further SMTP Protocol here..

}
catch (CSocketException * pE)
{
pE->ReportError();
}
xiaoyisnail 2009-01-05
  • 打赏
  • 举报
回复
up
学习

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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