简单检测远程机器是否可达!!!!!!!!

Zhong 2000-02-17 03:11:00
如何在程序简单检测远程机器是否可以访问,例如象Ping做的那样?
...全文
250 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Zhong 2000-02-18
  • 打赏
  • 举报
回复
za,小弟的问题已告解决。谢谢!!
za 2000-02-18
  • 打赏
  • 举报
回复
用GetHostByName函数时总返回nil,可能是没有初始化WinSock.
请看:
var
phe : PHostEnt;
Buffer : array [0..63] of char;
GInitData : TWSADATA;
begin
// 创建WinSock
WSAStartup($101, GInitData);
// 调用GetHostByName和GetHostByAddr,效果差不多
// phe<>nil就是alive啦,您得加上异常处理,否则...砰..
// 机器名 = phe^.h_name;
// IP地址保存在 phe^.h_addr_list 中
Buffer:= 'XX.XX.XX';
phe:= GetHostByName(Buffer);
Buffer:= Chr(XX)+Chr(XX)+Chr(XX)+Chr(XX);
phe:= GetHostByAddr(@Buffer,4,PF_INET);
// 关闭WinSock
WSACleanup;
end;
olo 2000-02-18
  • 打赏
  • 举报
回复
关注
Zhong 2000-02-18
  • 打赏
  • 举报
回复
Firing_Sky,可我用GetHostByName函数时总返回nil,能否详细点?
另外,因为已知对方IP Address,可否用GetHostByAddr?里面的调用参数总是搞不太清楚。Help Me, Please.
yijun2000 2000-02-18
  • 打赏
  • 举报
回复
我觉得用ping比较好,用ics控件中的ping来实现,是最简单的.如果用dos下microsoft自己的ping,比较麻烦.
Firing_Sky 2000-02-17
  • 打赏
  • 举报
回复
WHQ提出的方法是不合适的,
1。该主机能提供的服务可能并未启动
2。即使启动了,Socket连结的等待时间也太长,绝对不是个好办法

如果你已知对方的机器名,建议用API函数GetHostByName
WHQ 2000-02-17
  • 打赏
  • 举报
回复
比如UNIX系统都提供了一些诸如时间、回声(ECHO)之类的服务——其端口号可查TCP/IP手册。你先创建一个SOCKET,再连接到目标网络地址及端口号,就这么简单。Windows下据说没有提供这类标准服务,HTTP服务应该大多提供了,其端口号为80
Zhong 2000-02-17
  • 打赏
  • 举报
回复
WHQ,能否更详细点?
WHQ 2000-02-17
  • 打赏
  • 举报
回复
用SOCKET去连一个该主机能提供的服务,如果能连上,则机器可达
supershan 2000-02-17
  • 打赏
  • 举报
回复
例如PING 263:
procedure TForm1.Button1Click(Sender: TObject);
begin
winexec('ping www.263.net',SW_SHOW);
end;

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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