Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[14198] Re:로컬네트웍에서 컴퓨터이름으로 TCP Server에 접속하기
오랑캐꽃 [oranke] 2822 읽음    2012-04-05 15:50
흠... 우분투 요즘버전에 Wins 설정이 없어 윈도에서 호스트명으로 검색이 안되는 건 봤어도
로컬네트웍에서 윈도끼리 그러는 건 또 희안하네요...

uses
  ...WinSock, ... 

type
  PIPData = ^TIPData;
  TIPData = packed record
  case Integer of
    0: (IP1, IP2, IP3, IP4: Byte);
    1: (LID: LongWord);
  end;

function HostToIP(const aHost: AnsiString): TIPData;
var
  wsData   : TWSAData;
  HostEnt  : PHostEnt;
begin
  WSAStartup($0101, wsData);
  try
    hostEnt := GetHostByName(PAnsiChar(aHost));

    if Assigned(HostEnt) and
       Assigned(HostEnt^.H_Addr_List) and
       Assigned(HostEnt^.H_Addr_List^) then
      Result := PIPData(HostEnt^.H_Addr_List^)^
    else
      Result.LID := LongWord(-1);
  finally
    WSACleanup;
  end;
end;


대충 위와같은 함수를 만드신 다음 찾으려는 A 컴퓨터의 호스트명을 넣어보세요.

var
  IPData: TIPData; 
begin
  IPData := HostToIP('firstcom');
  with IPData do
    ShowMessage(Format('%d.%d.%d.%d', [IP1, IP2, IP3, IP4]));
end;


그런데... 답글 달다보니 이름으로도 핑이 안날아가는 상황이라구요? 흠...

일단 ipconfig /all 하셔서 로컬네트웍에 "Tcpip를 통한 NetBIOS" 항목이 "사용" 으로 되어있는지 살펴보세요.
없다면 제어판 -> 네트워크 -> 로컬영역 가셔서 속성창 띄운 다음에
네트워킹 탭에 "Microsoft 네트워크용 파일 프린터 공유" 와 "Microsoft Networks용 클라이언트"
뭐 이런 이름의 항목이 설치되어있는지 살펴보시구요.

근처에 XP깔린 컴퓨터가 없어서 확인이 안되지만, 아무튼 파일/프린터 공유나 NetBEUI 서비스
같은 거 설치해주면 잘 될껍니다.

그럼... 건투를...


박태성 님이 쓰신 글 :
: 3대의 컴퓨터가 공유기를 통해 로컬네트웍이 구성되어 있습니다.
: A컴(\\Firstcom)에 Firebird Server와 채팅서버가 구동중입니다.(OS win xp)
:
: B컴(\\SecondCom)이 문제가 생겨서 OS를 새로 설치했습니다.(Win XP Sp3)
:
: 그전까지 B컴에서 A컴의 서버로 접속시
: IdTcpClient.host='firstcom';  <- Error
: ZConnection.HostName = 'firstcom';  <- Error
:
: 이런식으로 상대방컴의 이름으로 접속이 되었는데 OS 재설치후에는 IP Address로는 접속이 되는데
: 컴퓨터이름으로 접속할려고 하면 컴퓨터를 찾지 못하면서 에러가 나네요.
:
: IdTcpClient.host='192.168.0.2';  <- 정상 접속
: ZConnection.HostName = '192.168.0.2';  <- 정상 접속
:
: 새로 설치한 Win XP의 기본설정중에 뭔가 바뀐게 있는것 같은데 뭔지를 모르겠네요
: 혹 이와같은 현상에 대해 조언을 좀 해주실수 있는지요?
:
: 참고로
: B컴의 네트웍환경에서 보면 A컴의 이름이 잘 보이며 클릭해서 들어가면 자료도 볼수 있습니다.
: 그리고 실행창에서 '\\Firstcom\Data'이런식으로 접근해봐도 A컴으로 접속이 제대로 됩니다.
: Ping테스트에서 ping 192.168.0.2 이렇게 보내면 제대로 응답이 오고
: Ping FirstCom 이렇게 하면 응답이 없네요(이건 원래 그런건지... ping에 대해 잘 몰라서요...)
:
: 유동ip아라서 공유기 전원이 꺼지면 각컴의 Ip가 바꾸더군요. 그래서 ip address로 설정을 잡아놓으면
: 매번 새로 ip를 찾아야 되서 불편하네요. 컴이름으로 접속하고 싶어요 ㅠ.ㅠ

+ -

관련 글 리스트
14197 로컬네트웍에서 컴퓨터이름으로 TCP Server에 접속하기 박태성 2375 2012/04/04
14198     Re:로컬네트웍에서 컴퓨터이름으로 TCP Server에 접속하기 오랑캐꽃 2822 2012/04/05
14199         친절한 답변 감사드립니다.(냉무) 박태성 1927 2012/04/05
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.