急!急!急!远程文件传送问题:两台计算机通过modem拨号网络连接成功后,如何得到远程计算机的动态ip地址? (高分) 用serversocket和ClientSocket,用socket.RemoteAddress取得动态IP 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 注:你的问题应该是知道目标机器的名称吧?否则你怎么连?能否改为如何通过机器名获取目标机的IP地址?在DELPHI WINSOCK单元中声明了THOSTENT结构API函数gethostbyname 和gethostname可以实现本地机的相关功能。远程目标机相应功能实现如下:uses … winsock;type … //声明一下自定义过程。 implementation …procedure Tform1.buttonclick(sender:Tobject);var wsadata:Twsadata; hostent:phostent; cvomputername,sip:string;begin scomputername:=edit1.text; wsastaruo(2,wsadata); hostent:=gethostbyname(Pchar(scomputername)); with hostent^ do sip:=format('%d.%d.%d.%d',[byte(h_addr^[0]),byte(h_addr^[1]),byte(h_addr^[2]),byte(h_addr^[3])]); end;wsacleanup;edit2.text:=sip;end;说明:EDIT1存放机器名EDIT1显示解析的IP地址。unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,winsock, StdCtrls;type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm} procedure TForm1.Button1Click(Sender: TObject);var wsadata:Twsadata; hostent:phostent; scomputername,sip:string;begin scomputername:=edit1.text; wsastartup(2,wsadata); hostent:=gethostbyname(Pchar(scomputername)); with hostent^ do sip:=format('%d.%d.%d.%d',[byte(h_addr^[0]),byte(h_addr^[1]),byte(h_addr^[2]),byte(h_addr^[3])]);wsacleanup;edit1.text:=sip;end;end. 楼上的,你是高手,佩服!佩服!!!。能否说明一下如何将用Modal互联的两台计算机A,B。B如何知道A的IP地址,如果知道了B的地址A就可以通过Winsock来传送数据了。 我现在跟 ronger (小猫) 用相同的问题,分数不够我可以加!谢谢! 我现在跟 ronger (小猫) 用相同的问题,分数不够我可以加!谢谢! 用TClientSocket与TServerSocket应该可以解决的这两个控件不是有hostname属性吗?端口就不用知道了吧?你既然是通过拨号网络在两台计算机之间建立起连接的怎么会有第三者呢?哈哈!!! delphi ctrl+空格问题 求DevExpressV39 各位高手请指点一二 100求解~~DELPHI编程及数据库 问题???????? 怎么新创建的窗口显示不出来?100分 求助,控制IE输出内容 国外最著名的delhpi站点是什么? 请问如何用DBEDIT显示被查询出来的某一记录的某一字段?谢了! 各位帮我解释一下,,mrTXT: OpenTextFile(nil, ''); Indy如何通过防火墙(400分求解)。 如何清空Access数据库中所有的表的记录。
能否改为如何通过机器名获取目标机的IP地址?在DELPHI WINSOCK单元中
声明了THOSTENT结构API函数gethostbyname 和gethostname可以实现本地机的相关功能。远程目标机相应功能实现如下:uses
…
winsock;type
…
//声明一下自定义过程。
implementation
…procedure Tform1.buttonclick(sender:Tobject);
var
wsadata:Twsadata;
hostent:phostent;
cvomputername,sip:string;begin
scomputername:=edit1.text;
wsastaruo(2,wsadata);
hostent:=gethostbyname(Pchar(scomputername));
with hostent^ do
sip:=format('%d.%d.%d.%d',[byte(h_addr^[0]),byte(h_addr^[1]),byte(h_addr^[2]),byte(h_addr^[3])]);
end;wsacleanup;
edit2.text:=sip;end;说明:
EDIT1存放机器名
EDIT1显示解析的IP地址。unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,winsock, StdCtrls;type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
var
wsadata:Twsadata;
hostent:phostent;
scomputername,sip:string;begin scomputername:=edit1.text;
wsastartup(2,wsadata);
hostent:=gethostbyname(Pchar(scomputername));
with hostent^ do
sip:=format('%d.%d.%d.%d',[byte(h_addr^[0]),byte(h_addr^[1]),byte(h_addr^[2]),byte(h_addr^[3])]);
wsacleanup;
edit1.text:=sip;end;end.