如何得到对方的ip(200分)

  • 主题发起人 主题发起人 huhongru
  • 开始时间 开始时间
H

huhongru

Unregistered / Unconfirmed
GUEST, unregistred user!
关于这个问题,已经讨论了很多,但好像没有一个真正回答的,最近刚到一个新的公司。
要我做关于异地数据库同步的问题。其中最关键就是如何知道接收方的ip。
条件是这样的,发送方和接收方都可以拨号上网。
请高手一定要多帮忙,这是我在新公司接的第一个任务。小妹将感激永远
 
uses {...,}Winsock;

procedure ShowHostName;
var
wVersionRequested : WORD;
wsaData : TWSAData;
p : PHostEnt;
s : array[0..128] of char;
p2 : pchar;
begin
{启动 WinSock}
wVersionRequested := MAKEWORD(1, 1);
WSAStartup(wVersionRequested, wsaData);

{计算机名}
GetHostName(@s, 128);
p := GetHostByName(@s);
ShowMessage(Format('Computer name is ''%s''.', [p^.h_Name]));

{IP地址}
p2 := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
ShowMessage(Format('IP address is %s.',[p2]));

WSACleanup;
end;

 
uses winsock;

procedure GetComputerNameAndIP;
var
wVersionRequested: WORD;
wsaData: TWSAData;
p: PHostEnt;
s: array[0..128] of char;
p2: pchar;
OutPut: array[0..100] of char;
begin
{Start up WinSock}
wVersionRequested := MAKEWORD(1, 1);
WSAStartup(wVersionRequested, wsaData);

{Get the computer name}
GetHostName(@s, 128);
p := GetHostByName(s);

{Get the IpAddress}
p2 := iNet_ntoa((PInAddr(p^.h_addr_list^))^);
StrPCopy(OutPut, 'Hostname: ' + Format('%s', [p^.h_Name]) + #10#13 +
'IPaddress: ' + Format('%s', [p2]));
WSACleanup;
MessageBox(0, OutPut, 'NetInfo', mb_ok or mb_iconinformation);
end;
 
谢谢cwmdelpher的回答:
可我不太明白程序的意思。你的意思是不是先要有对方的计算机名。
假若接收方和发送方拨165上网,如何得到对方的IP.
其实同时上165的人也许很多。怎么知道我想要接收方的IP

谢谢你再次回答

 
如果两方都是拨号上网,是无法直接知道对方的ip的,但是可以通过第三方服务,
把自己的ip发送给对方,
1,通过email通知对方,当计算机上网后,取得自已的ip,向对方发送一封email,另一台上网后则取得email则可得知对方ip
2,通过一个网站,上网后登陆网站,把自己的ip发送上去,存入指定的数据库或其它地方面,另一台上网后登陆同一网站取出ip

 
发送方跟接收方都可以拔号上网,那就是说两边谁都不能预先知道对方的IP
只能象QQ一样,有一个固定IP的中间服务器,先连接这个中间服务器,取得对方IP后再根据
这个IP直接连接。
 
用邮件比较现实
 
一方上网后,
取得自已的IP
然后打个电话告诉对方自已的IP不就行了吗?
开个玩笑了。
不过我做的第一个三层就是这样测试的。
 
现在有一种动态域名服务,被呼叫一方可以注册一个,子域名如jiheng.XXXXX.XXX,主叫方
不就知道了吗 有关动态域名服务 你可以在网上查,有很多



 
在服务端构架WWW服务器,当然是动态的,名字不要变就行。再运用三层的WEB方式就可以直
接使用。
 
动态域名服务确实可以帮助你实现,两边都申请一个动态域名,
你一上线,IP就和动态域名绑定,在程序里通过动态域名就可以得到IP地址
 
怎样申请动态域名,
还有怎样通过动态域名得到IP地址?
 
可是上網的都 是動態IP呀
 
这个问题的表述不清楚呀,如果你也不上DFW,我也不上DFW,你说你怎么有理由知道我的存在?
请说明一下双方都是什么状况,然后才能有针对性地解决
 
to xygz:
那是不是双方都上DFW,就可以知道彼些的IP呢
 
象希网等很多公司都可以申请动态域名,你可以分别申请XX1.3322.ORG,和XX2.3322.ORG
如果PINGXX2.3322.ORG能通,不就可以知道另外一台电脑有上网吗?
DELPHI不是有很多PING的代码和通过HOSTNAME找到IP的代码吗?
你就可以知道另外一台是否上网和IP了吗!
 
这个可以这么处理,用邮箱来搞定
当然要写自动发送和收取邮件并分析邮件内容啦
拨好以后发送一个包含自己ip的邮件就可以了
有点复杂,不过不难理解
 
to wdl:
谢谢你的回答。
你可不可以给我相关的代码。如果搞定
200分都是你的,好吗?
帮忙?
 
后退
顶部