求助:::如何利用程序来实现NAT?

zhuangbin 2005-07-12 11:32:49
如何利用程序来控制NAT设备,建立端口映射.

有人说在c++ builder 6.0中有一个控件:IdMappedPortTCP可以实现.

可是我对这个控件一点也不熟悉,大家可以给写个简单的NAT程序吗?

谢谢了.
...全文
381 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
xfpjl 2005-10-01
  • 打赏
  • 举报
回复
看过
dargons 2005-07-20
  • 打赏
  • 举报
回复
可能是端口已经被占用,
或者是控件本身的一些属性设置的问题.
zhuangbin 2005-07-19
  • 打赏
  • 举报
回复
这是我自己写的一个简单的端口映射程序,以前都可以运行的,但现在一编译就不能运行
不知道是什么原因,大家帮忙看一下吧?

首先对IdMappedPortTCP的Bindings属性进行设置:127.0.0.1:6222(服务端的端口是6222)
下面是程序:
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
IdMappedPortTCP1->MappedHost=Edit1->Text;// "193.193.193.177";
IdMappedPortTCP1->MappedPort=StrToInt(Edit2->Text);//6222;
IdMappedPortTCP1->Active=true;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
IdMappedPortTCP1->Active=false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
exit(0);
}
我第一次运行的时候可以执行的,现在却不可以进行编译了.
不知道大家有没有碰到过类似的问题,请帮忙看一下,多谢了.
zhuangbin 2005-07-14
  • 打赏
  • 举报
回复
可以给说一下<端口映射3.0版(支持请求延迟功能)>的使用方法吗?

它可以在内网内进行测试吗?

谢谢了,在线等.
WiseNeuro 2005-07-14
  • 打赏
  • 举报
回复
up
zhanghaicumt 2005-07-14
  • 打赏
  • 举报
回复
招聘兼职年薪3万!! 要求:1、有上网条件; 2、每天能上网1-2小时; 3、有网络应用的基础(会发邮件和论坛发贴)。 地区不限,年龄不限,工作时段不限,一切网上搞定。工资待遇:2000元以上/月。做得好年薪达10 万多。无须面试,网上报名即可,如果你觉得这是一个机会,请登陆http://www.ads4cn.com/newsbar/refferer.asp?zhangcumt看看这个网站的每一个细节。这里没有风险,不是冒险家的乐园,而是智者展现才华的用武之地,这份工作需要的只是你每天的坚持和定期的上网,不想试试吗?来吧,给自已一个展示的机会!
顾君彦 2005-07-14
  • 打赏
  • 举报
回复
端口映射很简单.
NAT稍复杂一些

网上有一个socketagent软件就可以做到,
不过是c#写的,你要的话,我可以把源码发给你.
zhuangbin 2005-07-13
  • 打赏
  • 举报
回复

我的调试环境:在局域网内的两台机器上分别运行客户端和服务器端程序,我的地址是192.168.0.178,服务端的地址是192.168.0.177,端口是6222;
在我的机器上运行客户端的程序,在要输入的服务器地址上输入我的地址:192.168.0.178,启用端口映射,可以连到服务器上.
我现在的疑问是:这怎么感觉好象和NAPT正好一反?
zhuangbin 2005-07-13
  • 打赏
  • 举报
回复
真的非常感谢你们,我现在已经实现了简单的端口映射,正在调试.
但我不知道这算不算是NAT,因为这还需要输入映射的端口号.
dargons 2005-07-13
  • 打赏
  • 举报
回复
在Bindings属性中可以绑定自己的IP和端口号

在程序中可以这样实现:

先在在Bindings属性中可以绑定自己的IP和端口号

__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
IdTCPServer1->Active=true;
IdMappedPortTCP1->MappedHost="193.193.193.201";//网关的IP
//IdMappedPortTCP1->MappedHost="61.52.133.157";//公网IP

}
constantine 2005-07-12
  • 打赏
  • 举报
回复
记错了是源码中国:www.Cn700.com
constantine 2005-07-12
  • 打赏
  • 举报
回复
这个网上有一个端口映射的代码,应该是出到3.0版吧,有代码,不过是delphi的
好像再www.playicq.com就有你找找
zhuangbin 2005-07-12
  • 打赏
  • 举报
回复
对于NAT的原理和类型我已经看过了,
但就是不知道该如何使用这个控件实现.

希望大家帮忙,在线等.
zhuangbin 2005-07-12
  • 打赏
  • 举报
回复
运行后出现:"Socket Error #10049"(在其上下文中,该请求的地址无效)。

能不能帮我分析一下原因,

另外我想问一下IdMappedPortTCP的Bindings属性应该如何设置呢?
zhuangbin 2005-07-12
  • 打赏
  • 举报
回复
to:constantine(飘遥的安吉儿)

你好,我在一篇文章<<使用INDY的IdMappedPortTCP控件实现动态的HTTP代理服务器 >>
仿照它上面的代码,我用CB和控件IdMappedPortTCP写了下面一段程序:实现NAT的功能,
可能还不能实现,想请你帮我看一下.
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
IdTCPServer1->Active=true;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::IdMappedPortTCP1Execute(TIdPeerThread *AThread)
{
//AThread->Connection->Write("Hello");
//IdTCPClient1->Host="193.193.193.178";//我本机的IP
//IdTCPClient1->Port=80;

IdMappedPortTCP1->MappedHost="193.193.193.201";//网关的IP
//IdMappedPortTCP1->MappedHost="61.52.133.157";//公网IP
IdMappedPortTCP1->MappedPort=2005;

AThread->Connection->Disconnect();
}
//---------------------------------------------------------------------------
dargons 2005-07-12
  • 打赏
  • 举报
回复
to:constantine(飘遥的安吉儿)

我也下载了 <端口映射3.0版>
对其中有些问题不太明白,想问一下:
那上面的目标地址是不是所谓的公网IP?
有没有CB方面的程序可以参考.
dargons 2005-07-12
  • 打赏
  • 举报
回复
to:constantine(飘遥的安吉儿)

这是不是就是<端口映射3.0版(支持请求延迟功能)>的代码呀?
我没学过Delphi,只是看起来像.
好象跟c++不太一样.
zhuangbin 2005-07-12
  • 打赏
  • 举报
回复
你好,我想问一下在<端口映射3.0版(支持请求延迟功能)>

中的目标地址和目标端口是否指的是公网的IP?

它所实现的是不是NAPT(网络地址端口转换)?
zhuangbin 2005-07-12
  • 打赏
  • 举报
回复
你好,我想问一下在<端口映射3.0版(支持请求延迟功能)>

中的目标地址和目标端口是否指的是公网的IP?

它所实现的是不是NAPT(网络地址端口转换)?
zhuangbin 2005-07-12
  • 打赏
  • 举报
回复
谢谢你,我先看看.

有问题,再麻烦你.
加载更多回复(5)

1,316

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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