|
고수는 아니지만..
//---------------------------------------------------------------------------
#include <vcl.h>
#include <winsock.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
}
//---------------------------------------------------------------------------
String __fastcall TForm1::HostNameToIpAddr(String sHost)
{
hostent *P;
in_addr la;
P = gethostbyname(sHost.c_str());
if(P) {
la.S_un.S_un_b.s_b1 = P->h_addr_list[0][0];
la.S_un.S_un_b.s_b2 = P->h_addr_list[0][1];
la.S_un.S_un_b.s_b3 = P->h_addr_list[0][2];
la.S_un.S_un_b.s_b4 = P->h_addr_list[0][3];
}
return(inet_ntoa(la));
}
//---------------------------------------------------------------------------
String __fastcall TForm1::IpAddrToHostName(String sIP)
{
in_addr la;
hostent *P;
la.s_addr = inet_addr(sIP.c_str());
if(la.s_addr != u_long(INADDR_NONE)) {
P = gethostbyaddr((char *)&la, 4, PF_INET);
if(P) return(P->h_name);
}
return("Invalid IP address");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ShowMessage( HostNameToIpAddr("kns.kornet.net") );
ShowMessage( IpAddrToHostName("168.126.63.1") );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
WORD wVersionRequested;
WSADATA WSAData;
wVersionRequested = MAKEWORD(1,1);
WSAStartup(wVersionRequested,&WSAData);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
WSACleanup();
}
//---------------------------------------------------------------------------
에궁... 님이 쓰신 글 :
: 델파이는 암것도 모르는데..제가 원하는 소스를 델파이로 만든걸 찾았거든여..
:
: 아래 소스인데.....델파이 잘하시는분 빌더로 변환좀 해주세염..
:
: 빌더랑 비슷한거 같은데..제 딴에 조금 고쳤더니..에러 무자게 많이 뜨더군여..-_-;;
:
: 참 이 소스 IP를 호스트 네임으로 호스트 네임을 아이피로 변환해 주는 함수입니다.
:
:
: uses WinSock
:
: function HostNameToIpAddr(const sHost: string): string;
: var
: P: PHostEnt;
: Ia: TInAddr;
: begin
: Ia.S_addr := 0;
: P := gethostbyname(PChar(sHost));
: if P <> NIL then
: with Ia.S_un_b, P^ do
: begin
: s_b1 := h_addr_list^[0];
: s_b2 := h_addr_list^[1];
: s_b3 := h_addr_list^[2];
: s_b4 := h_addr_list^[3];
: end;
: Result := inet_ntoa(ia);
: end;
:
:
:
: function IpAddrToHostName(const sIP: string): string;
: var
: I: Integer;
: P: PHostEnt;
: begin
: Result := '';
: I := inet_addr(PChar(sIP));
: if I <> u_long(INADDR_NONE) then
: begin
: P := GetHostByAddr(@I, SizeOf(Integer), PF_INET);
: if P <> NIL then
: Result := P^.h_name;
: end else
: Result := 'Invalid IP address';
: end;
:
|