不用固定IP,在广域网中用动态域名转接(花生壳),访问服务器上的数据,请问用什么开发方案 ( 积分: 100 )

  • 主题发起人 主题发起人 machcat
  • 开始时间 开始时间
M

machcat

Unregistered / Unconfirmed
GUEST, unregistred user!
不用固定IP,在广域网中用动态域名转接(花生壳),访问服务器上的数据,请问用什么开发方案?我用socketconnection连接,大家知道socketconnection只能用ip地址或主机名连接服务器,不能用域名,如果一定要用socketconnection,行不行,有什么办法?
 
不用固定IP,在广域网中用动态域名转接(花生壳),访问服务器上的数据,请问用什么开发方案?我用socketconnection连接,大家知道socketconnection只能用ip地址或主机名连接服务器,不能用域名,如果一定要用socketconnection,行不行,有什么办法?
 
用HTTP, 服务段用WebServer, 客户端的交互都通过Post方式实现
 
你用动态域名解析,组件一个VPN网络,其他的就和局域网内处理起来一样了
 
uses winsock;
function GetIPFromName(Name: string): string;
var
WSAData: TWSAData;
HostEnt: PHostEnt;
begin
WSAStartup(2, WSAData);
HostEnt := gethostbyname(PChar(Name));
with HostEnt^do
Result := Format('%d.%d.%d.%d', [Byte(h_addr^[0]),
Byte(h_addr^[1]), Byte(h_addr^[2]), Byte(h_addr^[3])]);
WSACleanup;
end;

socketconnection1.address:=GetIPFromName('你的动态域名');
 
万分感谢楼上的各位大侠,特别是迷糊兄.
迷糊兄:我用你的函数弄了个简单的程序测试,将大富翁域名代入,用返回的IP:222.39.0.130 在浏览器中无法访问大富翁论坛,用盒子域名代入,结果出现程序异常,不知是何原因
 
主机名直接用你的域名就行了。但一定要设好开放的端口呢。
 
B/S模式吧,不然在你数据量增大、关系复杂时你会死的很惨
 
to zjluming:
socketconnection的主机名可以用域名吗,你有试过吗?我的意思是socketconnection用动态域名就可连上主机有点不可加思议,能否具体说说,谢谢
 
大伙吱个声
 
强烈要求使用B/S模式。
 
procedure TForm1.Button1Click(Sender: TObject);
var
wVersionRequested : WORD;
wsaData : TWSAData;
p : PHostEnt;
p2 : PChar;
begin
wVersionRequested := MAKEWORD(1, 1);
WSAStartup(wVersionRequested, wsaData);
p := GetHostByName('www.2ccc.com');
p2 := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
caption := p2;
WSACleanup;
end;

用迷糊的办法得出来的结果和Ping的结构是一样的,不过ping出来的东西www.delphibbs.com 和www.2ccc.com又是一样的,都是222.39.0.130
可能是内网的原因
 
我觉得用HTTP, 服务段用WebServer, 客户端的交互都通过Post方式实现 最为可靠,
和我公司合作的伙伴中有用这种方式的,速度性能都非常让我满意,只要是是adsl正常
他们的软件都能运行,而且反映速度很快,不过不知道如何写,强烈建议章慧公布一下原代码!
 
是啊,哪位兄弟给个demo吧,分不够我另外开帖
 
如果一定要用socketconnection,是可以的.
在DATAmadal中增加一个SimpleObjectBroker1,在SocketConnection中的属性ObjectBroker指向SimpleObjectBroker1,将你的域名在SimpleObjectBroker1中的Servers中增加就可以了
 
谢谢大家,明天结帖
 
谢谢大家的参与,接受答案了
 
多人接受答案了。
 
后退
顶部