Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2008.05.25;
Скачать: [xml.tar.bz2];

Вниз

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

 
Сергей И   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.008 c
2-1209531259
solo_
2008-04-30 08:54
2008.05.25
Назначение OnDrawColumnCell в Рантайм для Грида


15-1206729020
easy
2008-03-28 21:30
2008.05.25
PDA RO шлюз форума


2-1208956311
Foo Fighters
2008-04-23 17:11
2008.05.25
как узнать результат запроса в ADOQuery?


2-1209032542
Int23
2008-04-24 14:22
2008.05.25
Как убрать расшареное имя с папки


15-1207737974
Дмитрий С
2008-04-09 14:46
2008.05.25
Lines под Vista





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский