-
есть 14-адресов...как сделать чтобы на серваке было видно в сети или не в сети конкретный адрес?
-
пинговать... можно dame ware на сервак поставить...
-
эээ погорячился, лучше NetView
-
Спасибо, но мне бы прогу написать на delphi....просто еще в школе проходил...ни черта не помню)
-
эээ, зачем? чем не устраивают готовые решения?
-
TIdICMP ?
-
потому что требуют чтобы я сам написал программу....так сказать обучают
-
> есть 14-адресов...как сделать чтобы на серваке было видно > в сети или не в сети конкретный адрес?
Надо дать определение понятию "адрес в сети". Наверное не адрес, а все же хост с адресом, плюс пинг (ICMP) может быть закрыт. Да и вообще все порты закрыты. Хост в сети в таком случае или нет?
-
-
зы. надеюсь подсеть ip адресов одна и маска сети 255.255.255.0 ?
-
подсеть одна, а маска сети 255.255.255.240 а клиент-сервер полегче пингования?
-
unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IdBaseComponent, IdComponent, IdRawBase, IdRawClient, IdIcmpClient, StdCtrls;
type TForm1 = class(TForm) btn1: TButton; lst1: TListBox; idcmpclnt1: TIdIcmpClient; procedure btn1Click(Sender: TObject); procedure idcmpclnt1Reply(ASender: TComponent; const AReplyStatus: TReplyStatus); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btn1Click(Sender: TObject); begin idcmpclnt1.Host:='176.194.204.175'; idcmpclnt1.ReceiveTimeout:=100; idcmpclnt1.Ping('32'); Caption:=IntToStr(idcmpclnt1.ReplyStatus.MsRoundTripTime) end;
procedure TForm1.idcmpclnt1Reply(ASender: TComponent; const AReplyStatus: TReplyStatus); begin try if idcmpclnt1.Host=AReplyStatus.FromIpAddress then lst1.Items.Add (AReplyStatus.FromIpAddress); except on e:Exception do end;
end; end.
Почем она не работает?
-
Удалено модератором Примечание: СПАМ
-
procedure NetScan(Res: TNetResource; Root: boolean);
var
hEnum: cardinal;
nrResource: array[0..512] of TNetResource;
dwSize: DWORD;
numEntries: DWORD;
i: DWORD;
dwResult: DWORD;
Sprev: String;
slUsers: TStringList;
begin
if Root = True then
dwResult := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK,
0, nil, hEnum)
else
dwResult := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK,
0, @Res, hEnum);
if dwResult = NO_ERROR then
begin
dwSize := SizeOf(nrResource);
numEntries := DWORD(-1);
if WNetEnumResource(hEnum, numEntries, @nrResource, dwSize) = NO_ERROR then
begin
for i := 0 to numEntries - 1 do
begin If Copy(nrResource[i].lpRemoteName, 1, 2) = '\\' THEN
if nrResource[i].lpRemoteName <> nil then
begin
If Pos('\', Copy(nrResource[i].lpRemoteName,
3, Length(nrResource[i].lpRemoteName))) = 0 then
begin
Form1.NetPCBox.Items.Add(Copy(nrResource[i].lpRemoteName, 3, Length(nrResource[i].lpRemoteName) - 2));
if (Form1.GetLocalIP(nrResource[i].lpRemoteName) <> '') And (Stemp <> Sprev) then
begin
Form1.TreeView1.Items.AddChild(Form1.TreeView1.Items.Item[0],
Form1.GetLocalIP(nrResource[i].lpRemoteName) + ' (' + Copy(nrResource[i].lpRemoteName, 3, Length(nrResource[i].lpRemoteName)) + ')' );
Form1.StatusBar1.Panels[1].Text:= Form1.StatusBar1.Panels[1].Text + Copy(nrResource[i].lpRemoteName, 3, Length(nrResource[i].lpRemoteName) - 2) + '-';
Application.ProcessMessages;
Form1.StatusBar1.Panels[2].Text:= 'Всего - ' + IntToStr(PCNetCount + 1);
Form1.StatusBar1.Refresh;
SPrev:= Stemp;
Application.ProcessMessages;
PCNetCount:= PCNetCount + 1;
end;
end;
end;
Scan(nrResource[i], false);
end;
end;
WNetCloseEnum(hEnum);
end;
end; ussage: NetScan(R, R, True); Выведи все активные и проверь, есть ли среди них интересующий тебя адрес
-
ussage: NetScan(R, True);
|