흠... 우분투 요즘버전에 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를 찾아야 되서 불편하네요. 컴이름으로 접속하고 싶어요 ㅠ.ㅠ