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

Вниз

IP всех компов в локальной сети   Найти похожие ветки 

 
kalishenko stas   (2002-11-15 20:59) [0]

У меня есть пример получения всех машин в сети, но он почему-то не работает (не пойму почему). Может, потому что сеть одноранговая, и, кроме того, на всех машинах стоит NovellClient, т.е. сеть новеловская. Если причина в этом, то что тогда делать, кто нибудь скажет?


 
cypher   (2002-11-17 01:01) [1]

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


 
kalishenko stas   (2002-11-18 09:18) [2]

>>Cypher и другим

Вот исходник:

unit Net;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls, Buttons, ImgList, ExtCtrls;

type
TNetForm = class(TForm)
ListView1: TListView;
ImageList1: TImageList;
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
Button2: TButton;
{ procedure FormShow(Sender: TObject);}
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure TimerTimer(Sender: TObject);
procedure FormCreate(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
Function FillNetLevel(xxx: PNetResource; list: TListItems) : Word;
function GetComputer:String;
end;

var
NetForm: TNetForm;
name_server:integer;
implementation
{uses main,Info,Network_connect;}
{$R *.DFM}

function TNetForm.FillNetLevel(xxx: PNetResource; List:TListItems): Word;
Type
PNRArr = ^TNRArr;
TNRArr = array[0..59] of TNetResource;
Var
x: PNRArr;
tnr: TNetResource;
I : integer;
EntrReq,
SizeReq,
twx: THandle;
WSName: string;
LI:TListItem;
begin

Result :=WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER, xxx, twx);
If Result = ERROR_NO_NETWORK Then Exit;
if Result = NO_ERROR then
begin
New(x);
EntrReq := 1;
SizeReq := SizeOf(TNetResource)*59;
while (twx <> 0) and
(WNetEnumResource(twx, EntrReq, x, SizeReq) <> ERROR_NO_MORE_ITEMS) do
begin
For i := 0 To EntrReq - 1 do
begin
Move(x^[i], tnr, SizeOf(tnr));
case tnr.dwDisplayType of
RESOURCEDISPLAYTYPE_SERVER:
begin
if tnr.lpRemoteName <> "" then
WSName:= tnr.lpRemoteName
else WSName:= tnr.lpComment;
LI:=list.Add;
LI.Caption:=copy(WSName,3,length(WSName)-2);
//list.Add(WSName);


end;
else FillNetLevel(@tnr, list);
end;
end;
end;
//Dispose(x);
//WNetCloseEnum(twx);
end;
end;




function TNetForm.GetComputer: String;
begin
result:="";
if (ShowModal=mrok)and(ListView1.Selected<>nil) then result:=ListView1.Selected.Caption;
end;

procedure TNetForm.BitBtn2Click(Sender: TObject);
begin
ModalResult:=mrcancel;
end;

procedure TNetForm.BitBtn1Click(Sender: TObject);
begin
modalresult:=mrok;
end;



procedure TNetForm.Button1Click(Sender: TObject);
var i:integer;
j:integer;
name,k:string;
begin
try
ListView1.Items.Clear;
FillNetLevel(nil,ListView1.Items);
i:=ListView1.Items.Count;
edit1.Text:=IntToStr(i);
//i:=ListView1.Items.Count;
//edit1.Text:=IntToStr(i);



//i:=0;


button1.Enabled:=false;
except
messagebox(0,"Невозможно выполнить задачу","Внимание",MB_OK);
end;

end;



procedure TNetForm.Button2Click(Sender: TObject);
begin
close;
end;

procedure TNetForm.TimerTimer(Sender: TObject);
begin
if ListView1.Items.Count=0 then close;
end;

procedure TNetForm.FormCreate(Sender: TObject);
begin
button1.Enabled:=true;
end;

end.




 
Sergey V. Shadrin   (2002-11-18 09:50) [3]

2 kalishenko stas) а tcp/ip в сети вообще стоит?


 
kalishenko stas   (2002-11-18 11:40) [4]

Стоит и tcp/ip, и ipx/spx (по второму работает NetWare).


 
Wonder   (2002-11-18 14:00) [5]

А "Клиент для сетей Microsoft" стоит?


 
nickolayLI   (2002-11-18 14:01) [6]

Писок всех компов
function TTimeCr.FillNetLevel(xxx: PNetResource; list: TStrings) : Word;
Type
PNRArr = ^TNRArr;
TNRArr = array [0..59] of TNetResource;
Var
x: PNRArr;
tnr: TNetResource;
I : integer;
EntrReq,
SizeReq,
twx: Cardinal;
WSName: string;
begin
Result := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, xxx, twx);
If Result = ERROR_NO_NETWORK Then Exit;
if Result = NO_ERROR then begin
New(x);
EntrReq := 1;
SizeReq := SizeOf(TNetResource)*59;
while (twx <> 0) and(WNetEnumResource(twx, EntrReq, x, SizeReq) <> ERROR_NO_MORE_ITEMS) do begin
for i := 0 To EntrReq - 1 do begin
Move(x^[i], tnr, SizeOf(tnr));
case tnr.dwDisplayType of
RESOURCEDISPLAYTYPE_SERVER: begin
if tnr.lpRemoteName <> "" then
WSName:= tnr.lpRemoteName
else WSName:= tnr.lpComment;
list.Add(Copy(WSName,3,Length(WSName)));
Application.ProcessMessages;
end; else FillNetLevel(@tnr, list);
end;
end;
end;
Dispose(x);
WNetCloseEnum(twx);
end;
end;

айпи по имени
function HostToIP(Name: string; var Ip: string): Boolean;
var
wsdata : TWSAData;
hostName : array [0..255] of char;
hostEnt : PHostEnt;
addr : PChar;
begin
WSAStartup ($0101, wsdata);
try
gethostname (hostName, sizeof (hostName));
StrPCopy(hostName, Name);
hostEnt := gethostbyname (hostName);
if Assigned (hostEnt) then
if Assigned (hostEnt^.h_addr_list) then begin
addr := hostEnt^.h_addr_list^;
if Assigned (addr) then begin
IP := Format ("%d.%d.%d.%d", [byte (addr [0]),
byte (addr [1]), byte (addr [2]), byte (addr [3])]);
Result := True;
end
else
Result := False;
end
else
Result := False
else begin
Result := False;
end;
finally
WSACleanup;
end
end;


 
kalishenko   (2002-11-18 16:11) [7]

>>Wonder

По умолчанию стоит "Novell NetWare Client". Так что, поэтому ничего и не видно?


 
Wonder   (2002-11-18 16:53) [8]

Я не спрашивал, что стоит по умолчанию, я спрашивал, стоит ли "Клиент для сетей Microsoft" вообще...

В "Сетевом окружении" имена компьютеров (окромя серверов Нетвари) видны?


 
kalishenko   (2002-11-18 17:03) [9]

>>Wonder

"Клиент для сетей Microsoft" стоит и компы в сетевом окружении видны.


 
Wonder   (2002-11-18 17:33) [10]

http://delphi.mastak.com/cgi-bin/faq.pl?look=1&id=988621104&n=20


 
kalishenko   (2002-11-18 17:48) [11]

Сейчас попробую, хотя не пойму в чем разница. Все эти проги (получения списка машин) используют одни и те же функции.


 
False_Delirium   (2002-11-19 03:03) [12]

Служюа доступа к файлам и принтерам ... если не стоит, то нет биос не видит этот комп...


 
kalishenko   (2002-11-19 09:31) [13]

И служба доступа стоит, т.е. все в полном боекомплекте.


 
Wonder   (2002-11-19 10:08) [14]

Так у тебя код из FAQ-а заработал или где?


 
kalishenko stas   (2002-11-19 13:39) [15]

>>Wonder

Да нет, как раз наоборот, код из FAQ-а не заработал (как только не кручу). Выдает ошибки типа "[Error] Unit1.pas(60): Types of actual and formal var parameters must be identical". Че с ней делать не знаю.

"И служба доступа стоит, т.е. все в полном боекомплекте." - а это я о том, что все необходимые компоненты сетевого окружения стоят.


 
Wonder   (2002-11-19 14:07) [16]

>>Да нет, как раз наоборот, код из FAQ-а не заработал (как только не кручу). Выдает ошибки типа "[Error] Unit1.pas(60): Types of actual and formal var parameters must be identical". Че с ней делать не знаю.

:)))
Ну а в хелп по этой ф-ции глянуть? Да и поглядеть тип параметров?

Замени

var
...
BufSize : Integer;
Entries : Integer;
...

на

var
...
BufSize : Longword;
Entries : Longword;
...

и будет тебе счастье :)))


 
kalishenko stas   (2002-11-19 14:30) [17]

Спасибо огромное, Wonder, все получилось. (Уррррра!)


 
Filat   (2002-11-19 21:41) [18]

А для разных сегментов показывает, т.е. типа 10.10.1.35 и 10.10.5.35 покажет?
Я полгода назад что-то похожее делал, так показывал компы только в том сегменте, в котором мой комп, хотя DNS и все остальное настроено, ну шлюзы соответственно тоже....



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

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

Наверх





Память: 0.49 MB
Время: 0.009 c
3-62432
Fishka
2002-12-25 11:17
2003.01.20
Удаление записи из выборки (из query)


8-62664
Сергей С
2002-09-22 03:01
2003.01.20
Как написать DSP-плагин к Winamp у? В примерах есть визуальный пл


1-62649
AlV
2003-01-08 18:10
2003.01.20
Как программным способом наполнить компонент ImageList


1-62454
dumb
2003-01-09 07:38
2003.01.20
Component -> Import ActiveX Control


14-62732
Cobalt
2002-12-23 23:51
2003.01.20
Об удалении





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