[fpc-pascal] Ping problems - OS/X
Reinier Olislagers
reinierolislagers at gmail.com
Wed May 21 17:08:02 CEST 2014
On 21/05/2014 17:02, Reinier Olislagers wrote:
> On 21/05/2014 16:36, Peter Brooks wrote:
>> Unfortunately, I've tried both the full path and just the name -
>> apparently TProcess is supposed to look in the path - and it does
>> work. When it is called, it returns a '0' indicating successful
>> completion.
>
> /disclaimer: haven't looked at your code/
> voicechecker & fpcup contains a wrapper around TProcess[1] that lets you
> easily get output. See the convenience functions ExecuteCommand etc.
>
> An example of use: pinging a host on OSX, can be found in voicechecker's
> pingtest.pas [2]
>
> It works well for voicechecker, fpcup and some other projects
>
> [1]
> https://bitbucket.org/reiniero/voicechecker/src/01d4337c5ed948aeafe57d892d33db98c0a9f742/processutils.pas?at=default
>
> [2]
> https://bitbucket.org/reiniero/voicechecker/src/01d4337c5ed948aeafe57d892d33db98c0a9f742/pingtest.pas?at=default
>
Perhaps you need to further analyze the output when you get result code
0 as the ping command may have succeeded but the hosts were unreachable.
Voicechecker's voicecheckermain.pas uses this when calling pingtest:
function TForm1.AnalyzeUnixPing(OutputText: TStringList): boolean;
begin
result:=false;
if (pos(' 0.0% packet loss',OutputText.Text)>0) then //OSX
result:=true
else if (pos(' 0% packet loss',OutputText.Text)>0) then //Linux
result:=true;
end;
and
ATest:=TRemoteCommandTest.Create;
ATest.TestName:='RouterInternetUp';
... details ...
TRemoteCommandTest(ATest).Command:='ping -c 1 www.google.com; echo "";
echo ""';
TRemoteCommandTest(ATest).AnalyzeOutput:=@AnalyzeUnixPing;
... more code...
More information about the fpc-pascal
mailing list