1.如何判断一个主机(ip) 是否存在? 2.如何判断这个主机(ip)的端口是否开放??
解决方案 »
- 求delphi開發的自動發送email的程序
- 高手帮帮我,一个DBEdit的问题,急!!!!
- 问个简单问题:如何使combobox的items只允许用户选择,不允许用户修改?
- 请问: 如何实现在DELPHI中对SQL2000数据库中的记录进行自动累加
- 如何格式化日期????
- pagecontrol控件的标签上如何添加自己的图标
- 在Delphi6中,如何将MaskEdit控件的EditMast属性中添加'/'字符,并在TEXT的显示时,TEXT文本上有一'/'
- 如何在程序中关闭其他应用程序?如Word等
- 我的数据库是Sql server2000我有远程数据模块中有一个TADOConnection,TDataSetProvider与TADOQuery
- 那位哥们能提供李维的书下载?
- 請教,BDE問題:"Corrupt file-other than header"
- 求远程获得CPU,内存等状态的资料!
最简单的方法就是用Socket连接对方IP与端口,如果成功则表是存在且打开,如果......
2.如何判断这个主机(ip)的端口是否开放?我也很想知道,我需要连接某个IP的3306端口但是之前要知道这个IP是否可达,端口是否开放,但我不会网络编程,请同志们给个实例,谢谢!
function PingAlive(const AHost: string; const ATimeout: Cardinal = 1000): boolean;
var
IdIcmpClient: TIdIcmpClient;
begin
try
IdIcmpClient := TIdIcmpClient.Create(nil);
IdIcmpClient.ReceiveTimeout := ATimeout; //設定回應的等候時間
IdIcmpClient .Host := AHost;
Result := true;
try
IdIcmpClient.Ping;
except
Result := false;
end;
finally
FreeAndNil(IdIcmpClient);
end;
end;function CheckServerAlive(const AHost: string; const APort: integer): boolean;
var
IdTCPClient: TIdTCPClient;
begin
Result := false; if not PingAlive(AHost) then
Exit; try
IdTCPClient := TIdTCPClient.Create(nil);
IdTCPClient.Host := AHost;
IdTCPClient.Port := APort; try
IdTCPClient.Connect;
Result := true;
except
Result := false;
end;
IdTCPClient.Disconnect;
finally
FreeAndNil(IdTCPClient);
end;
end;procedure TFormLogin.Button1Click(Sender: TObject);
begin
if CheckServerAlive(Edit1.Text,3306) then ShowMessage('OK');
end;
去delphifans.com下载。