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

Вниз

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

 
Pohil   (2003-09-24 12:40) [0]

Help me!!!


 
Verg   (2003-09-24 12:43) [1]

В "кладовку" залезь, поищи!!!


 
GH@ST   (2003-09-24 12:46) [2]

Пинг


 
Verg   (2003-09-24 12:51) [3]


> Пинг


Супер!
Все компы просто обязаны иметь установленным протокол TCP/IP, без этого протокола, конечно, сеть MS Windows жить не может...


 
Hooch   (2003-09-24 12:54) [4]

в Делфи компонет есть TShellTreeView показывает компы в сети, погляди исходники может поможет


 
Anatoly Podgoretsky   (2003-09-24 13:12) [5]

Наличии протокола тоже не является критерием для обнаружения, часто установлено "не обнаруживать компьютер"


 
Mickey   (2003-09-24 17:43) [6]

function TForm_PSW.GetContainerList(ListRoot:PNetResource):TList;
Var
TempRec : PNetRes;
Buf : Pointer;
Count,
BufSize,
Res : DWORD;
lphEnum : THandle;
p : PNetResourceArr;
i : SmallInt;
NetworkList : TList;
Begin
NetworkList := TList.Create;
Result:=nil;
BufSize := 8192;
GetMem(Buf, BufSize);
Try
Res := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK,
RESOURCEUSAGE_CONTAINER{0}, ListRoot,lphEnum);
If Res <> 0 Then
Raise Exception(Res);
Count := $FFFFFFFF;
Res := WNetEnumResource(lphEnum, Count, Buf, BufSize);
If Res = ERROR_NO_MORE_ITEMS
Then Exit;
If (Res <> 0) Then
Raise Exception(Res);
P := PNetResourceArr(Buf);
For I := 0 To Count - 1 Do
Begin
New(TempRec);
TempRec^.dwScope := P^.dwScope;
TempRec^.dwType := P^.dwType ;
TempRec^.dwDisplayType := P^.dwDisplayType ;
TempRec^.dwUsage := P^.dwUsage ;
TempRec^.LocalName := StrPas(P^.lpLocalName);
TempRec^.RemoteName := StrPas(P^.lpRemoteName);
TempRec^.Comment := StrPas(P^.lpComment);
TempRec^.Provider := StrPas(P^.lpProvider);
NetworkList.Add(TempRec);
Inc(P);
End;
Res := WNetCloseEnum(lphEnum);
If Res <> 0 Then
Raise Exception(Res);
Result:=NetWorkList;
Finally
FreeMem(Buf);
End;
End;

procedure TForm_PSW.Button1Click(Sender: TObject);
var
List:TList;
i:integer;
begin
List:=TList.Create;
List:=GetContainerList(nil);
List:=GetContainerList(List[0]);
for i:=0 to List.Count-1 do
if PNetRes(List[i])^.RemoteName="Твой домен" then
begin
List:=GetContainerList(List[i]);
Break;
end;
for i := 0 to List.Count-1 do
ListBox1.Items.Add(PNetRes(List[i])^.RemoteName);
end;

Проверено, работает.


 
Е-Моё имя   (2003-09-24 17:46) [7]


> Проверено, работает.

всегда?


 
Snap   (2003-09-24 20:43) [8]

очевидно работало когда проверялось. А вешей которые рабоитают всегда нету.


 
Anatoly Podgoretsky   (2003-09-25 09:26) [9]

Он тебя спрашивает, покажет ли твой код ВСЕ ВКЛЮЧЕНЫЕ МАШИНЫ (как в вопросе), а не зарегистрированые ресурсы.


 
Толик   (2003-09-25 14:31) [10]

данный код покажет все зарегистрированные ресурсы, а вот для определение ВКЛЮЧЕННОЙ машины можно воспользоваться, например, ф-ей WinSock.GetHostByName и после каждого её вызова проверять WinSock.WSAGetLastError, если вернулся NULL.


 
Толик   (2003-09-25 14:34) [11]

прошу прощения, поторопился. GetHostByName не даёт нужного рез-та. :-((


 
GH@ST   (2003-09-26 13:40) [12]

>Verg ©
Умничаем...
Вообще автор не сказал для чего ищем какие компы..куда они включенные..а главное для чего он это делает...если это твоя сеть то лучше установить протокол и всетаки пинг..точнее будет...


 
icebeerg   (2003-09-27 10:31) [13]

А если вот это попробовать?
----------------------------
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
ListBox1: TListBox;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
Computer: Array [1..500] of String;
ComputerCount:Integer;

implementation

{$R *.DFM}
procedure FindAllComputers(Workgroup: String);
Var
EnumHandle : THandle;
WorkgroupRS : TNetResource;
Buf : Array[1..500] of TNetResource;
BufSize : Cardinal;
Entries : Cardinal;
Result : Integer;
begin
ComputerCount := 0;
Workgroup := Workgroup + #0;
FillChar(WorkgroupRS, SizeOf(WorkgroupRS) , 0);
With WorkgroupRS do begin
dwScope := 2;
dwType := 3;
dwDisplayType := 1;
dwUsage := 2;
lpRemoteName := @Workgroup[1];
end;
WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,0,@WorkgroupRS,EnumHandle );

Repeat
Entries := 1;
BufSize := SizeOf(Buf);
Result:=WNetEnumResource(EnumHandle,Entries,@Buf,BufSize);
If (Result = NO_ERROR) and (Entries = 1) then begin
Inc( ComputerCount );
Computer[ ComputerCount ] := Buf[1].lpRemoteName;
end;
Until (Entries <> 1) or (Result <> NO_ERROR);
WNetCloseEnum( EnumHandle );
end;
{ Find All Computers }

procedure TForm1.Button1Click(Sender: TObject);
var
i,i2:integer;
Str1,Str2:String;
begin
FindAllComputers("Firma");
For i:=1 to ComputerCount do
Begin
Str1:=Computer[i];
Str2:="";
For i2:=1 to Length(Str1) do
If Str1[i2]<>"\" Then Str2:=Str2+Str1[i2];
Computer[i]:=Str2;
End;

For i:=1 to ComputerCount do
Begin
Str1:=Computer[i];
LIstBox1.Items.Add(Computer[i]);
End;

end;

end.



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

Форум: "Сети";
Текущий архив: 2003.11.24;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.01 c
1-79040
viol-2
2003-11-13 11:39
2003.11.24
Загрузка программы


3-78821
OlgaTelekom
2003-11-04 10:19
2003.11.24
формирование новой страницы в FastReport


1-78912
АСМиД
2003-11-12 16:50
2003.11.24
EOLEError


14-79173
Anton.
2003-10-30 12:14
2003.11.24
Слова благодарности


6-79075
Mikka
2003-09-29 18:13
2003.11.24
Сокеты





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский