Форум: "Сети";
Текущий архив: 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