ping

3 отговора 148 прегледа
#1

ping

Искам да направя ping от мое приложение в малка LAN и да прихвана ехото?

Как най просто би станало това?

Отговор
в отговор на Hяkoй #2

Re: ping

сигурно има и по-цивилизован начин, но ето едно решение:

викаш ping в bat файл който пише резултата във временен файл
чакаш bat-а да приключи
четеш резултата
/пускане и чакане на "външен" файл се обсъжда в една от сега_актуалните_теми/

--------------------------------------
Започва Път от моят праг...
Отговор
в отговор на Hяkoй #3

Re: ping

Taka kakto go e napisal Hateras, moje i da stane (ne sum go pravil, zatova kazvam moje).
Az lichno se zanimavah predi vreme s ping i mesg v lan. Ima drug nachin ama e malko dulgichak. ako imash jelanie da ti pratia source i raboteshto exe pishi na dalt@dir.bg

Отговор
в отговор на Hяkoй #4

Re: ping

Погледни Indy компонентите - мисля, че има всичко необходимо!
Включително echo клиент сървър - ако ти трябва де


ето и примера от D7 - но компонентите можеш да инсталираш на по ниска версия.

{***************************************************************
*
* Project : PingGUI
* Unit Name: Main
* Purpose : Demonstrates ICMP "Ping"
* Version : 1.0
* Date : Wed 25 Apr 2001 - 01:31:04
* Author : <unknown>
* History :
* Tested : Wed 25 Apr 2001 // Allen O'Neill <[email protected]>
*
****************************************************************}

unit Main;

interface

uses
{$IFDEF Linux}
QGraphics, QControls, QForms, QDialogs, QStdCtrls, QExtCtrls,
{$ELSE}
windows, messages, graphics, controls, forms, dialogs, stdctrls, extctrls,
{$ENDIF}
SysUtils, Classes, IdIcmpClient, IdBaseComponent, IdComponent, IdRawBase, IdRawClient;


type
TfrmPing = class(TForm)
lstReplies: TListBox;
ICMP: TIdIcmpClient;
Panel1: TPanel;
btnPing: TButton;
edtHost: TEdit;
procedure btnPingClick(Sender: TObject);
procedure ICMPReply(ASender: TComponent; const ReplyStatus: TReplyStatus);
private
public
end;

var
frmPing: TfrmPing;

implementation
{$IFDEF MSWINDOWS}{$R *.dfm}{$ELSE}{$R *.xfm}{$ENDIF}

procedure TfrmPing.btnPingClick(Sender: TObject);
var
i: integer;
begin
ICMP.OnReply := ICMPReply;
ICMP.ReceiveTimeout := 1000;
btnPing.Enabled := False; try
ICMP.Host := edtHost.Text;
for i := 1 to 4 do begin
ICMP.Ping;
Application.ProcessMessages;
//Sleep(1000);
end;
finally btnPing.Enabled := True; end;
end;

procedure TfrmPing.ICMPReply(ASender: TComponent; const ReplyStatus: TReplyStatus);
var
sTime: string;
begin
// TODO: check for error on ping reply (ReplyStatus.MsgType?)
if (ReplyStatus.MsRoundTripTime = 0) then
sTime := '<1'
else
sTime := '=';

lstReplies.Items.Add(Format('%d bytes from %s: icmp_seq=%d ttl=%d time%s%d ms',
[ReplyStatus.BytesReceived,
ReplyStatus.FromIpAddress,
ReplyStatus.SequenceId,
ReplyStatus.TimeToLive,
sTime,
ReplyStatus.MsRoundTripTime]));
end;

end.

Редактирано от PhantomAS на

Отговор