如何ping局域网内的另一台机器?(50分)

  • 主题发起人 主题发起人 jinghj
  • 开始时间 开始时间
J

jinghj

Unregistered / Unconfirmed
GUEST, unregistred user!
如何ping局域网内的另一台机器?
 
1>ping computerIP/name
2>exec('.../cmd.exe')
 
开始---运行---ping IP地址/计算机名。
 
晕~~~我是问在程序里怎么写?
 
是不是可以调用api函数实现
 
同样是在程序中运行cmd
winexec('cmd.exe/ping ip ).大概如此吧,你再看下帮助。
 
ping 192.168.0.2
192.168.0.2 指的是局域网中要PING的那台机器的IP地址。
 
返回值是什么啊?
 
怎么根据这个来判断机器是否开机?
 
如果非要看看返回值的话就
winexec('ping 168.88.88.88 >pp.txt')
返回值见PP.TXT中 呵呵好.
 
用TIdIcmpClient控件来做,可以很灵活的控制程序,达到你想要效果.IdIcmpClient1.Host:=Edit1.Text;
IdIcmpClient1.ReceiveTimeout:=1000;
IdIcmpClient1.Ping;
Application.ProcessMessages;
 
TIdIcmpClient这个控件ping之后怎么判断是否ping通呢?谢谢啊
 
const
PING_COUNT = 4; // ping的次数
n
var
Icmp: TIdIcmpClient;
nErrPingCount: Integer;
begin
Icmp.Host := '192.168.0.1'; // 客户端IP
for i := 0 to PING_COUNT - 1 do
begin
Icmp.Ping();
if Icmp.ReplyStatus.BytesReceived = 0 then Inc(nErrPingCount)
else Break;
end;
if nErrPingCount > PING_COUNT - 1 then
begin
// 证明没有开机
end;
end;
 
我怎么ping哪台机器都是没反应啊?你说的协议栈是怎么回事?
 
不会吧,执行后有何反映?
是不是那台机器对ICMP的断口屏蔽了?你在CMD模式下手写PING一下,看看回应
 
晕~~~原来是忘了给nErrPingCount 初始化了
 
接受答案了.
 
后退
顶部