Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
네트웍환경의 다른 컴퓨터 이름읽기
윈도95의 바탕화면에 있는 네트워크 환경처럼 LAN으로 연결된 컴퓨터들의
컴퓨터 이름을 읽어오는 방법을 알고 싶습니다.
그리고 읽어온 컴퓨터 이름을 가지고 서로 컴퓨터간의 통신이 가능한 방법도
부탁드립니다.
1
COMMENTS
김영대
•
1999.04.23 21:07
이상준 wrote:
> 윈도95의 바탕화면에 있는 네트워크 환경처럼 LAN으로 연결된 컴퓨터들의
> 컴퓨터 이름을 읽어오는 방법을 알고 싶습니다.
> 그리고 읽어온 컴퓨터 이름을 가지고 서로 컴퓨터간의 통신이 가능한 방법도
> 부탁드립니다.
안녕하세요 김영대입니다
원도우즈 네트워크 환경의 컴퓨터 리스트를 구하는 내부
통신 프로토콜은 TCP/IP가 아닌 BetBEUI 를 사용합니다
하지만 컴퓨터간의 통신 프로그램을 직접 작성하셔야 한다면
TCP/IP 를 사용하는 것이 일반적이고 TCP/IP 에서는
IP 주소를 리스트 형태로 다 주는건 없고 하나하나 검사해야 합니다
아래 예제는 원도우즈 네트워크 환경의 컴퓨터 리스트를 구하는 예제입니다
그리고 제 홈페이지(myhome.shinbiro.com/~cozykyd) 의 자료실 4 에 보시면
"상대방 컴퓨터 이름으로 IP주소 구하기 (반대도 가능)" 자료가 있는데
이건 컴퓨터 이름으로 IP를 구하고 그 반대의 기능도 가능한 예제입니다
아래 예제와 자료실의 소스를 참고하시면 구현하실 수 있을겁니다
그럼 수고하세요
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
LB_UserList: TListBox;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
ServerName: String;
function GetNetworkUserName: Boolean;
end;
PnetResourceArr = ^TNetResource;
var
Form1: TForm1;
implementation
{$R *.DFM}
function TForm1.GetNetworkUserName: Boolean;
var
NetResource: TNetResource;
Buf:Pointer;
Count, BufSize, Res: DWORD;
i: Integer;
lphEnum: THandle;
p: PnetResourceArr;
begin
GetNetworkUserName := False;
LB_UserList.Clear;
GetMem(Buf, 8192);
try
FillChar(NetResource, SizeOf(NetResource), 0);
NetResource.lpRemoteName := PChar(ServerName);
NetResource.dwDisplayType := RESOURCEDISPLAYTYPE_SERVER;
NetResource.dwUsage := RESOURCEUSAGE_CONTAINER;
NetResource.dwScope := RESOURCETYPE_DISK;
Res := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK, RESOURCEUSAGE_CONTAINER,
@NetResource,lphEnum);
if Res <> 0 then
System.Exit;
while true do
begin
Count := -1;
BufSize := 8192;
Res := WNetEnumResource(lphEnum, Count, Pointer(Buf), BufSize);
if Res = ERROR_NO_MORE_ITEMS then
System.Exit;
if (Res <> 0) then
System.Exit;
p := PNetResourceArr(Buf);
for i := 0 to Count - 1 do
begin
LB_UserList.Items.Add(p^.lpRemoteName + 2);
Inc(p);
end;
end;
Res := WNetCloseEnum(lphEnum);
If Res <> 0 then
raise Exception(Res);
finally
FreeMem(Buf);
GetNetworkUserName := True;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ServerName := '전산운영팀'; // 네트워크 환경의 작업그룹명
if GetNetworkUserName then
Showmessage('총 '+IntToStr(LB_UserList.Items.Count)+' 개의 개체가 있습니다')
else
Showmessage('정보를 얻지 못했습니다');
end;
end.
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
박상현
•
1999.04.24 23:06
1
COMMENTS
/
0
LIKES
에러에 관하여(급함)
이정욱
•
1999.04.25 08:02
리스트에 없는 인덱스를 가리켰기 때문에 난 에러 입니다. 예를들면 리스트에 들어있는 아이템의 갯수가 3...
WhiteDragon
•
1999.04.24 20:37
1
COMMENTS
/
0
LIKES
도스용 dbf를 파라독스 db로 전환(급합니다.)
한태진
•
1999.04.25 04:23
WhiteDragon wrote: > 제가 변환할려는 것은 도스용 dbf화일을 델파이 파라독스 화일인 db로 전환할려고 ...
박홍석
•
1999.04.24 20:25
2
COMMENTS
/
0
LIKES
날짜로 쿼리하기
강두헌
•
1999.04.27 22:14
박홍석 wrote: > 안녕하세요. > > 날짜형 필드를 가지고 쿼리하는 방법을 알고 싶습니다. > 여러가지...
신인재
•
1999.04.26 21:03
박홍석 wrote: > 안녕하세요. > > 날짜형 필드를 가지고 쿼리하는 방법을 알고 싶습니다. > 여러가지...
이헌
•
1999.04.24 18:48
1
COMMENTS
/
0
LIKES
printer.Canvas.TextOut 의 처리한계는?
이정욱
•
1999.04.24 20:15
TextOut의 마지막 인자는 String형입니다. 기본적으로 델파이 32비트에서는 String형의 길이는 제한이 없...
박광호
•
1999.04.24 18:28
1
COMMENTS
/
0
LIKES
스트링으로 받은 폼명으로 폼생성
이정욱
•
1999.04.24 20:32
폼 이름이 Form2라고 가정을 하고 Form2는 TForm형이라고 가정을 할때, Form2 := TForm.Create(Self); ...
김성희
•
1999.04.24 09:25
1
COMMENTS
/
0
LIKES
파라메터 전송에 관한것인데요...
안치봉
•
1999.04.24 12:05
김성희 wrote: > 독립된 프로그램 사이에서 파라메터가 이동할수 있는 방법이나요? > 있다면 어떤방법인...
우민석
1999.04.24 07:43
0
COMMENTS
/
0
LIKES
다이얼로그처럼 네트워크 환경사용
박홍석
•
1999.04.24 06:45
1
COMMENTS
/
0
LIKES
ComboBox에서의 힌트보이기
구창민
•
1999.04.24 07:30
박홍석 wrote: > 안녕하세요. > > 콤보박스를 펼쳐서 마우스로 아이템을 선택할려고 이동중일때 > 그 ...
김경수
•
1999.04.24 05:42
2
COMMENTS
/
0
LIKES
인쇄관련
이정욱
•
1999.04.24 08:09
이 문제의 키는 Font.Height 에 있습니다. 화면이 72 DPI일 경우 Font.Height 의 공식은 아래와 같습니다....
김경수
•
1999.04.24 12:42
안녕하세요. 김경수입니다. 에구 size로 하니까 아래와 같은 문제가 없어지더군요. 답변 감사드립니다. ...
김영회
•
1999.04.24 04:00
1
COMMENTS
/
0
LIKES
[긴급문의]MSSQL Aliases 설정 에러
이정욱
•
1999.04.24 08:11
다른곳에서 잘되었다면 삼보에서도 잘 되어야 겠죠. 델파이와 BDE의 관계중 하나 가능성이 있는것이라면 ...
초보자
•
1999.04.24 02:28
2
COMMENTS
/
0
LIKES
화면 분할과 스플릿터
chaser
•
1999.04.24 03:24
초보자 wrote: > 윈도우의 탐색기 처럼 한 폼에서 여러개의 부분으로 구분된 폼을 만들고 싶습니다. 어떻...
초보자
•
1999.04.24 21:53
답변에 감사드립니다 한가지 더 질문올립니다. 화면을 양쪽으로 분할하는것은 이제 알았습니다. 그러면 ...
손진운
•
1999.04.24 02:08
1
COMMENTS
/
0
LIKES
퀵 리포트 내용을 팩스전송방법
이정욱
•
1999.04.24 04:32
AsyncProfessional이라는 컴포넌트가 지원합니다. 유료구요... 구입문의는 나이렉스로 문의 바랍니다. 5...
송동일
•
1999.04.24 01:05
1
COMMENTS
/
0
LIKES
사다리 프로그램?
안치봉
•
1999.04.24 04:35
송동일 wrote: > 델파이로 사다리 프로그램을 짜볼려고 하는데... > 통 감이 안 잡히네요... > 학교 다...
chaser
1999.04.23 23:44
0
COMMENTS
/
0
LIKES
질문]ActiveForm의 Fosus
한승현
•
1999.04.23 23:31
1
COMMENTS
/
0
LIKES
component install에 관한 질문...
안치봉
•
1999.04.24 04:34
한승현 wrote: > > dpk, dpl이 아닌 개별적인 파일(pas)을 가지고 하나씩 > component를 install시키...
공대규
•
1999.04.23 22:45
1
COMMENTS
/
0
LIKES
Canvas.CopyRect 에 대하여
안치봉
•
1999.04.23 23:23
공대규 wrote: > 안녕하십니까요? > > PaintBox에 Image1.canvas를 카피하려 할 때, 에러가 납니다. >...
권만섭
1999.04.23 19:36
0
COMMENTS
/
0
LIKES
[긴급]마스크에디터에 공백있으면 저장이 안돼요...
이민병
•
1999.04.23 19:14
1
COMMENTS
/
0
LIKES
Sql-Net세팅과 오라클 연결..도와주세요
김경수
•
1999.04.24 05:06
안녕하세요 김경수라는 사람입니다. 전 nt용 오라클8하구 델파이4랑 해봤는데 뭐 같은내용이겠지요.. 오...
이상준
•
1999.04.23 18:51
1
COMMENTS
/
0
LIKES
네트웍환경의 다른 컴퓨터 이름읽기
윈도95의 바탕화면에 있는 네트워크 환경처럼 LAN으로 연결된 컴퓨터들의 컴퓨터 이름을 읽어오는 방법을 알고 싶습니다. 그리고 읽어온 컴퓨터 이름을 가지고 서로 컴퓨터간의 통신이 가능한 방법도 부탁드립니다.
김영대
•
1999.04.23 21:07
이상준 wrote: > 윈도95의 바탕화면에 있는 네트워크 환경처럼 LAN으로 연결된 컴퓨터들의 > 컴퓨터 이름...
배리스
•
1999.04.23 06:39
1
COMMENTS
/
0
LIKES
TMemo의 마지막으로 가게 하는 방법
이정욱
•
1999.04.23 07:08
파워러브 델파이 창간호의 일부 입니다~ 1. 현재 라인번호 알아내기 메모에서 현재 Caret이 위치하...
이상준
1999/04/23 18:51
Views
201
Likes
0
Comments
1
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
> 윈도95의 바탕화면에 있는 네트워크 환경처럼 LAN으로 연결된 컴퓨터들의
> 컴퓨터 이름을 읽어오는 방법을 알고 싶습니다.
> 그리고 읽어온 컴퓨터 이름을 가지고 서로 컴퓨터간의 통신이 가능한 방법도
> 부탁드립니다.
안녕하세요 김영대입니다
원도우즈 네트워크 환경의 컴퓨터 리스트를 구하는 내부
통신 프로토콜은 TCP/IP가 아닌 BetBEUI 를 사용합니다
하지만 컴퓨터간의 통신 프로그램을 직접 작성하셔야 한다면
TCP/IP 를 사용하는 것이 일반적이고 TCP/IP 에서는
IP 주소를 리스트 형태로 다 주는건 없고 하나하나 검사해야 합니다
아래 예제는 원도우즈 네트워크 환경의 컴퓨터 리스트를 구하는 예제입니다
그리고 제 홈페이지(myhome.shinbiro.com/~cozykyd) 의 자료실 4 에 보시면
"상대방 컴퓨터 이름으로 IP주소 구하기 (반대도 가능)" 자료가 있는데
이건 컴퓨터 이름으로 IP를 구하고 그 반대의 기능도 가능한 예제입니다
아래 예제와 자료실의 소스를 참고하시면 구현하실 수 있을겁니다
그럼 수고하세요
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
LB_UserList: TListBox;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
ServerName: String;
function GetNetworkUserName: Boolean;
end;
PnetResourceArr = ^TNetResource;
var
Form1: TForm1;
implementation
{$R *.DFM}
function TForm1.GetNetworkUserName: Boolean;
var
NetResource: TNetResource;
Buf:Pointer;
Count, BufSize, Res: DWORD;
i: Integer;
lphEnum: THandle;
p: PnetResourceArr;
begin
GetNetworkUserName := False;
LB_UserList.Clear;
GetMem(Buf, 8192);
try
FillChar(NetResource, SizeOf(NetResource), 0);
NetResource.lpRemoteName := PChar(ServerName);
NetResource.dwDisplayType := RESOURCEDISPLAYTYPE_SERVER;
NetResource.dwUsage := RESOURCEUSAGE_CONTAINER;
NetResource.dwScope := RESOURCETYPE_DISK;
Res := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK, RESOURCEUSAGE_CONTAINER,
@NetResource,lphEnum);
if Res <> 0 then
System.Exit;
while true do
begin
Count := -1;
BufSize := 8192;
Res := WNetEnumResource(lphEnum, Count, Pointer(Buf), BufSize);
if Res = ERROR_NO_MORE_ITEMS then
System.Exit;
if (Res <> 0) then
System.Exit;
p := PNetResourceArr(Buf);
for i := 0 to Count - 1 do
begin
LB_UserList.Items.Add(p^.lpRemoteName + 2);
Inc(p);
end;
end;
Res := WNetCloseEnum(lphEnum);
If Res <> 0 then
raise Exception(Res);
finally
FreeMem(Buf);
GetNetworkUserName := True;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ServerName := '전산운영팀'; // 네트워크 환경의 작업그룹명
if GetNetworkUserName then
Showmessage('총 '+IntToStr(LB_UserList.Items.Count)+' 개의 개체가 있습니다')
else
Showmessage('정보를 얻지 못했습니다');
end;
end.