Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.05.25;
Скачать: CL | DM;

Вниз

Как узнать включен ли в сеть определенный компьютер?   Найти похожие ветки 

 
Сергей И   (2007-07-06 14:51) [0]

Подскожите ка копределить ключен ли в данный момент определенный компьютер локальной сети?


 
Сергей М. ©   (2007-07-06 15:23) [1]

Никак.

По кр.мере при такой постановке вопроса.


 
Dib@zol ©   (2007-07-06 15:59) [2]

Хм. В сетке я не спец, но может Net Send когда отработает какойнить результат возвращает? Напр если exit code 0 то всё удачно, если 1 то напр ошибка сети итп?


 
umbra ©   (2007-07-06 16:05) [3]


> включен ли в сеть определенный компьютер

что имеется в виду - подключен ли кабель к сетевой карте этого компьютера? работает ли определенный сетевой интерфейс на этом компьютере? можно ли общаться с этим компьютером по определенному протоколу?

что именно?


 
Dib@zol ©   (2007-07-06 16:13) [4]

C:\>telepator
Походу это означает, доступен ли комп с некоего другого.


 
iXT ©   (2007-07-06 16:16) [5]

> [4] Dib@zol ©   (06.07.07 16:13)

Что значит доступен
ЗЫ
Кто же телепатор на C: ставит, да еще и корень? :)


 
Dib@zol ©   (2007-07-06 16:25) [6]


> Что значит доступен

Ну эта, как его. Можно ли напр обратиться к его расшаренным папкам.

ЗЫ
А мож у меня переменные окружения прописаны? =D


 
Reindeer Moss Eater ©   (2007-07-06 16:28) [7]

Можно ли напр обратиться к его расшаренным папкам.

"обратиться" можно всегда. даже если нету ни шар, ни самого компа.


 
iXT ©   (2007-07-06 16:31) [8]

> Ну эта, как его. Можно ли напр обратиться к его расшаренным
> папкам.

А у меня тачка с http-80, pop3-110, и smtp-25 и ни одной расшаренной папки. Он как доступен?
Плохой телепатор :)


 
Dib@zol ©   (2007-07-06 16:32) [9]


> "обратиться" можно всегда. даже если нету ни шар, ни самого
> компа.


Ёлы. Не цепляйся к словам. Под понятием ОБРАТИТЬСЯ я подразумевал "получить положительный ответ". Да мол, есть такая папка.


 
Dib@zol ©   (2007-07-06 16:33) [10]


> Плохой телепатор :)

> напр


 
DVM ©   (2007-07-06 17:19) [11]

C:\>telepator
telepator> open 192.168.0.10 139
192.168.0.10>Hello! This computer is enabled!
telepator> quit
192.168.0.10>By
C:\>


 
Anatoly Podgoretsky ©   (2007-07-06 18:34) [12]

> Dib@zol  (06.07.2007 16:32:09)  [9]

получить положительный ответ можно, а можно и не получить.
Второе вероятнее.


 
Temp_Yuriy   (2007-07-07 06:26) [13]

Я сталкивался и решал подобную проблемму. Если нет правил файрвола, то (по умолчанию в виндах всегда открыт порт 139) доступность удалённого компьютера можно определить так:

procedure Object_Linki;
begin
try
   try
     NMEchoAdr_IzLinki := TNMEcho.Create(Form1);
     NMEchoAdr_IzLinki.TimeOut := 150;
     NMEchoAdr_IzLinki.Port := 139;
     NMEchoAdr_IzLinki.Host := IP_adress;
     NMEchoAdr_IzLinki.OnConnect :=Form1.test_IzLinki;
     NMEchoAdr_IzLinki.Connect;
   except
     Exit;
   end;
 finally
   NMEchoAdr_IzLinki.Free;
 end;
end;

procedure TForm1.test_IzLinki (Sender : TObject);
begin
 CountArray_IzLinki[i_IzLinki] := False;
 OldArray_IzLinki[i_IzLinki] := 0;
end;

Тока додумай и переделай код под свою программу, а то мне лень -). И


 
Temp_Yuriy   (2007-07-07 06:31) [14]

Хотя лови целиком программу, секретов тут нет....
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, Psock, NMEcho, ExtCtrls, MPlayer;

type
 TForm1 = class(TForm)
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 public
   procedure test_IzLinki (Sender : TObject);
   procedure TestCCO_IzLinki(Sender : TObject);
   procedure ClickOnImage_IzLinki(Sender: TObject);
   procedure LinkiParametrName(Sender: TObject);
   procedure LinkiIPAdres(Sender: TObject);

   { Public declarations }
 end;
 TOldArray = array of integer;
 TCountArray = array of bool;
var
 Form1: TForm1;
 NMEchoAdr_IzLinki : TNMEcho;
//  ErrorAdr : bool;
 i_IzLinki, U_IzLinki  : integer;
 Timer_IzLinki : TTimer;
 MediaPlayer : TMediaPlayer;
 CurrentDir, State_IzLinki, IP_IzLinki, KolvoAdr_IzLinki : string;
 Tops_IzLinki, Lefts_IzLinki, Names_IzLinki, Nazv_IzLinki : string;
 LabelLeft2_IzLinki, LabelLeft_IzLinki, Nazvan_IzLinki : string;
 APINazvan_IzLinki : string;
 List_IzLinki:TStringList;
 OldArray_IzLinki:   TOldArray;
 CountArray_IzLinki: TCountArray;
 Image1_IzLinki : TImage;
implementation

{$R *.dfm}

Продолжение дальше в ответах.......


 
Temp_Yuriy   (2007-07-07 06:32) [15]

procedure TForm1.LinkiParametrName(Sender: TObject);
var
 LocalLinkiList : TStringList;
 LocalLinkiStroka, LinkiTemp, NewLinkiTemp : string;
 LocalLinkiTemp, LocLinkiInt : integer;
 sslinki : string;
begin
///////////////////// Для названия параметра //////////////////////
 LocalLinkiStroka :=InputBox("Название", "Введите название", "");
 LocalLinkiList :=TStringList.Create;
 LocalLinkiList.LoadFromFile(CurrentDir+"\chas.ini");
 if LocalLinkiStroka <> "" then begin
   for LocalLinkiTemp :=1 to StrToInt(KolvoAdr_IzLinki) do
   begin
     LinkiTemp  := LocalLinkiList.Values[IntToStr(LocalLinkiTemp)+"NazvanLink"];
     if LinkiTemp = TLabel(Sender).Name then begin
       NewLinkiTemp := IntToStr(LocalLinkiTemp)+"NazvanLink"+"="+ LinkiTemp;
       LocLinkiInt :=LocalLinkiList.IndexOf(NewLinkiTemp);
       LocLinkiInt :=LocLinkiInt-1;

//        ShowMessage (IntToStr(LocLinkiInt));
//        LocalLinkiList.Values[LocLinkiInt] := LocalLinkiStroka ;
       sslinki :=LocalLinkiList.Names[LocLinkiInt];
       LocalLinkiList.Values[sslinki] :=LocalLinkiStroka;
       TLabel(Sender).Caption :=LocalLinkiStroka;
       LocalLinkiList.SaveToFile(CurrentDir+"\chas.ini");
//        ShowMessage (sslinki);
     end;
   end;
 LocalLinkiList.Free;
end;
end;

procedure TForm1.LinkiIPAdres(Sender: TObject);
// Для IP адреса
var
 LocalLinkiList : TStringList;
 LocalLinkiStroka, LinkiTemp, NewLinkiTemp : string;
 LocalLinkiTemp, LocLinkiInt : integer;
 sslinki : string;
begin
///////////////////// Для названия параметра //////////////////////
 LocalLinkiStroka :=InputBox("A P I", "Введите API Адрес", "");
 LocalLinkiList :=TStringList.Create;
 LocalLinkiList.LoadFromFile(CurrentDir+"\chas.ini");
 if LocalLinkiStroka <> "" then begin
   for LocalLinkiTemp :=1 to StrToInt(KolvoAdr_IzLinki) do
   begin
     LinkiTemp  := LocalLinkiList.Values[IntToStr(LocalLinkiTemp)+"APINazvanLink"];
     if LinkiTemp = TLabel(Sender).Name then begin
////        ShowMessage ("YES!!!!!");
       LinkiTemp  := LocalLinkiList.Values[IntToStr(LocalLinkiTemp)+"APILink"];
////        ShowMessage (LinkiTemp);

       NewLinkiTemp := IntToStr(LocalLinkiTemp)+"APILink"+"="+ LinkiTemp;
////ShowMessage (NewLinkiTemp);

       LocLinkiInt :=LocalLinkiList.IndexOf(NewLinkiTemp);
////        LocLinkiInt :=LocLinkiInt-2;

//        ShowMessage (IntToStr(LocLinkiInt));
//        LocalLinkiList.Values[LocLinkiInt] := LocalLinkiStroka ;
//ShowMessage (LocalLinkiList.Values[LocLinkiInt]);

       sslinki :=LocalLinkiList.Names[LocLinkiInt];
       LocalLinkiList.Values[sslinki] :=LocalLinkiStroka;
       TLabel(Sender).Caption :=LocalLinkiStroka;
       LocalLinkiList.SaveToFile(CurrentDir+"\chas.ini");
//        ShowMessage (sslinki);
     end;
   end;
 LocalLinkiList.Free;
end;

end;


 
Temp_Yuriy   (2007-07-07 06:32) [16]

procedure TForm1.ClickOnImage_IzLinki(Sender: TObject);
var
 U, ij, str  : integer;
 LocalList : TStringList;
 TempState, NamesAdr, TempStr : string;
begin
 for U :=0 to ComponentCount - 1 do
   if Components[U] is TImage then
   if TImage(Components[U]).Name = TComponent(Sender).Name then begin
//      ShowMessage ("Click!!!");
     CurrentDir := GetCurrentDir(); //Возвращает текущий каталог
     LocalList:=TStringList.Create;
     LocalList.LoadFromFile(CurrentDir+"\chas.ini");
     KolvoAdr_IzLinki :=LocalList.Values["[KolvoAdrLink]"];
       for ij :=1 to StrToInt(KolvoAdr_IzLinki) do
       begin
         NamesAdr  := LocalList.Values[IntToStr(ij)+"AdrLink"];
         if NamesAdr = TComponent(Sender).Name then begin
//           ShowMessage (TComponent(Sender).Name);
         TempState := IntToStr(ij)+"AdrLink" + "=" + TComponent(Sender).Name;
//          ShowMessage (TempState);
         str := LocalList.IndexOf(TempState);
         str := str - 7;
         TempStr :=LocalList.Names[str];
////////////////////////////////////////////////////////////////
     if LocalList.Values[TempStr] = "0" then begin
       LocalList.Values[TempStr] := "1";
       TImage(Components[U]).Picture.LoadFromFile(CurrentDir+"\green.bmp");
//        MediaPlayer.Parent :=Self;
//        MediaPlayer.Visible :=false;
       MediaPlayer.AutoOpen :=true;
       MediaPlayer.FileName :=CurrentDir+"\ADRESON.WAV";
       MediaPlayer.Open;
       MediaPlayer.Play;
       LocalList.SaveToFile(CurrentDir+"\chas.ini");
     end
     else if LocalList.Values[TempStr] = "1" then begin

       LocalList.Values[TempStr] := "0";
       TImage(Components[U]).Picture.LoadFromFile(CurrentDir+"\blue.bmp");
//        MediaPlayer.Parent :=Self;
//        MediaPlayer.Visible :=false;
       MediaPlayer.AutoOpen :=true;
       MediaPlayer.FileName :=CurrentDir+"\ADRESOFF.WAV";
       MediaPlayer.Open;
       MediaPlayer.Play;
       LocalList.SaveToFile(CurrentDir+"\chas.ini");
     end;
         end;
       end;

//     NamesAdr  := LocalList.Values[IntToStr(ij)+"Name"];

   end;
end;

procedure Object_Linki;
begin
try
   try
     NMEchoAdr_IzLinki := TNMEcho.Create(Form1);
     NMEchoAdr_IzLinki.TimeOut := 150;
     NMEchoAdr_IzLinki.Port := 139;
     NMEchoAdr_IzLinki.Host := IP_IzLinki;
     NMEchoAdr_IzLinki.OnConnect :=Form1.test_IzLinki;
     NMEchoAdr_IzLinki.Connect;
   except
     Exit;
   end;
 finally
   NMEchoAdr_IzLinki.Free;
 end;

end;


 
Temp_Yuriy   (2007-07-07 06:33) [17]

procedure TForm1.TestCCO_IzLinki(Sender : TObject);
var
 qwerty : TStringList;
 tempik : string;
begin
//  SetLength (OldArray, StrToInt(KolvoAdr)+1);
//  SetLength (CountArray, StrToInt(KolvoAdr)+1);
 for i_IzLinki :=1 to StrToInt(KolvoAdr_IzLinki) do
 begin
 qwerty:=TStringList.Create;
 qwerty.LoadFromFile(CurrentDir+"\chas.ini");
 tempik  :=qwerty.Values[IntToStr(i_IzLinki)+"StateLink"];
 if (tempik <> "") and (tempik = "1") then begin
   IP_IzLinki  :=List_IzLinki.Values[IntToStr(i_IzLinki)+"APILink"];
   if (OldArray_IzLinki[i_IzLinki]) < 2 then begin
     Inc(OldArray_IzLinki[i_IzLinki]);
     qwerty.Free;
   end
else begin
  CountArray_IzLinki[i_IzLinki] := True;
//   Label1.Caption :="Связи - нет";
  MediaPlayer.AutoOpen :=true;
  MediaPlayer.FileName :="E:\student\WinChas\AUDIO\Adreserr.wav";
  MediaPlayer.Open;
  MediaPlayer.Play;
  for U_IzLinki :=0 to ComponentCount - 1 do
  if Components[U_IzLinki] is TImage then
  if TImage(Components[U_IzLinki]).Name = "a"+IntToStr(i_IzLinki) then
  TImage(Components[U_IzLinki]).Picture.LoadFromFile(CurrentDir+"\red.bmp");
  qwerty.Free;
end;
end;
  Object_Linki;
end;

end;
procedure TForm1.test_IzLinki (Sender : TObject);
begin
 CountArray_IzLinki[i_IzLinki] := False;
 OldArray_IzLinki[i_IzLinki] := 0;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 CurrentDir := GetCurrentDir();
 List_IzLinki:=TStringList.Create;
 List_IzLinki.LoadFromFile(CurrentDir+"\chas.ini");
 KolvoAdr_IzLinki := List_IzLinki.Values["[KolvoAdrLink]"];
 for i_IzLinki :=1 to StrToInt(KolvoAdr_IzLinki) do
 begin
   State_IzLinki  :=List_IzLinki.Values[IntToStr(i_IzLinki)+"StateLink"];
   IP_IzLinki     :=List_IzLinki.Values[IntToStr(i_IzLinki)+"APILink"];
   Tops_IzLinki   :=List_IzLinki.Values[IntToStr(i_IzLinki)+"TopLink"];
   Lefts_IzLinki  :=List_IzLinki.Values[IntToStr(i_IzLinki)+"LeftLink"];
   Names_IzLinki  :=List_IzLinki.Values[IntToStr(i_IzLinki)+"AdrLink"];
   Nazv_IzLinki   := List_IzLinki.Values[IntToStr(i_IzLinki)+"NameLink"];
   Nazvan_IzLinki := List_IzLinki.Values[IntToStr(i_IzLinki)+"NazvanLink"];
   APINazvan_IzLinki := List_IzLinki.Values[IntToStr(i_IzLinki)+"APINazvanLink"];
   LabelLeft2_IzLinki  := List_IzLinki.Values[IntToStr(i_IzLinki)+"LabelLeft2Link"];
   LabelLeft_IzLinki := List_IzLinki.Values[IntToStr(i_IzLinki)+"LabelLeftLink"];

 Image1_IzLinki :=TImage.Create(Self);
 Image1_IzLinki.Width  :=80;
 Image1_IzLinki.Height :=80;
 if Tops_IzLinki   <> "" then Image1_IzLinki.Top  :=StrToInt (Tops_IzLinki)-10;
 if Lefts_IzLinki  <> "" then Image1_IzLinki.Left :=StrToInt (Lefts_IzLinki)-20;
 Image1_IzLinki.Picture.LoadFromFile(CurrentDir+"\COMPBLAC.bmp");
 Image1_IzLinki.Parent :=Self;

   with TImage.Create(Self) do
   begin
     if Tops_IzLinki   <> "" then Top  :=StrToInt (Tops_IzLinki);
     if Lefts_IzLinki  <> "" then Left :=StrToInt (Lefts_IzLinki);
     if Names_IzLinki  <> "" then Name :=Names_IzLinki;
     Width :=22;
     Height :=18;
     if (State_IzLinki <> "") and (State_IzLinki = "0") then
       Picture.LoadFromFile(CurrentDir+"\blue.bmp")
     else
       Picture.LoadFromFile(CurrentDir+"\green.bmp");
     OnClick :=ClickOnImage_IzLinki;
     Parent :=Self;
   end;
// Для названия параметра
 with TLabel.Create(Self) do
 begin
   if Tops_IzLinki  <> "" then Top     := StrToInt (Tops_IzLinki)+50;
   if Lefts_IzLinki <> "" then Left    := StrToInt (Lefts_IzLinki)+ StrToInt(LabelLeft_IzLinki);
   if Names_IzLinki <> "" then Caption := Nazv_IzLinki;
   Name :=Nazvan_IzLinki;
   Font.Color :=clWindow;
   OnClick :=LinkiParametrName;
   Parent :=Self;
 end;

// Для IP адреса
 with TLabel.Create(Self) do
 begin
   if Tops_IzLinki  <> "" then Top     := StrToInt (Tops_IzLinki)+65;
   if Lefts_IzLinki <> "" then Left    := StrToInt (Lefts_IzLinki)+ StrToInt(LabelLeft2_IzLinki);
   if Names_IzLinki <> "" then Caption := IP_IzLinki;
   Name :=APINazvan_IzLinki;
   Font.Color :=clWindow;
   OnClick :=LinkiIPAdres;
   Parent :=Self;
 end;

 end;

 Timer_IzLinki :=TTimer.Create(Self);
 Timer_IzLinki.Enabled :=true;
 Timer_IzLinki.Interval :=8000;
 Timer_IzLinki.Name :="Timer1Link";
 Timer_IzLinki.Tag :=0;
 Timer_IzLinki.OnTimer :=TestCCO_IzLinki;

 MediaPlayer :=TMediaPlayer.Create(Self);
 MediaPlayer.Parent :=Self;
 MediaPlayer.Visible :=false;

 SetLength (OldArray_IzLinki, StrToInt(KolvoAdr_IzLinki)+1);
 SetLength (CountArray_IzLinki, StrToInt(KolvoAdr_IzLinki)+1);

end;

end.


 
Temp_Yuriy   (2007-07-07 06:35) [18]

А это фрагмент файла конфигурации.

[KolvoAdrLink]=2

[Adress]

1StateLink=1
1APILink=1.1.1.1
1NameLink=gjggjjgj
1NazvanLink=xxx1
1APINazvanLink=zzz1
1TopLink= 30
1LeftLink=30
1AdrLink=a1
1LabelLeftLink=-30
1LabelLeft2Link=-30

2StateLink=1
2APILink=2.2.2.2
2NameLink=34534
2NazvanLink=xxx2
2APINazvanLink=zzz2
2TopLink= 130
2LeftLink=70
2AdrLink=a2
2LabelLeftLink=-50
2LabelLeft2Link=-50


 
VirEx ©   (2007-07-07 11:05) [19]

можно узнать по GetHostByName существовал ли вобще такой хост в сетке (например в локалке, комп вырубили час назад - хаб еще "помнит" о нем, сбросили хаб и функция не работает)
можно пингом, но ненадежно
можно raw tcp отсылать на диапазон портов но тоже не надежно


 
umbra ©   (2007-07-08 19:07) [20]


> можно узнать по GetHostByName существовал ли вобще такой
> хост в сетке

если есть DNS, Wins или правильно заполнен файл hosts


 
DVM ©   (2007-07-08 22:59) [21]


> хаб еще "помнит"

Хаб ни о чем помнить не может. Arp - таблицу имеет свитч, да и то в этой таблице нет ни слова об именах компьютеров.


 
VirEx ©   (2007-07-09 19:23) [22]


>  [21] DVM ©   (08.07.07 22:59)

точно. свитч.
да. в таблице только айпишники, а имена в локалке получить удается видимо только через netbios (?)

зы. когда пропускал самодельный пингер через сниффер, кроме пинга были еще какие-то "странные" пакеты, оказалось от функции GetHostByName


 
SergAS   (2007-08-17 09:01) [23]

Команду net view никто не отменял.


 
Slym ©   (2007-08-17 10:07) [24]

test.bat
@echo off
ping -n 1 %1 >nul
arp /a | find.exe /i /c "%1 "


пример:
C:\test.bat 192.168.1.1
>1 - если имеется
>0 - если отсутствует


 
Slym ©   (2007-08-17 10:08) [25]

Забыл добавить: и на большинство файрволов нас..ть :)



Страницы: 1 вся ветка

Текущий архив: 2008.05.25;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.021 c
2-1209657059
VirEx
2008-05-01 19:50
2008.05.25
Математика


2-1209043999
programmer9090
2008-04-24 17:33
2008.05.25
Иконку на ToolButton


2-1208870117
ekto
2008-04-22 17:15
2008.05.25
Отправка письма с пом. Indy


2-1209717817
holodok
2008-05-02 12:43
2008.05.25
Цикл


15-1207886308
TUser
2008-04-11 07:58
2008.05.25
Что такое "установка ПО"?