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

C++빌더 Q&A
C++Builder Programming Q&A
[53053] Re:Re:Re:Re:Re:또 질문이 있습니다..
이점한 [redyouth] 1145 읽음    2008-04-08 16:40
장성호님께서 번역하신 소스는 함수자나요 ..
그냥 버튼 이벤트에서 장성호님이 적으신 함수 호출 해서 쓰면 되자나요 ..
TStringList*를 리턴하는 함수니 굳이 예제를 만든다면 아래 정도 ...

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    TStringList* IP_List;
   
    //  함수 호출
    IP_List = LocalIPList();

    ShowMessage( IP_List->Text ); // <== 이러면 IPList가 쫙 보이겠죠 .. 설마 TStringList를 잘 모르시지는 않죠 ?
    ShowMessage( IP_List->Strings[ 0 ] );  //  <== 이러면 첫번째 IP가 보이겠죠 ?
    ShowMessage( IP_List->Strings[ 1 ] );  //  <== 이러면 두번째 IP가 보이겠죠 ?
   
    delete IP_List; // LocalIPList() 함수에서 new로 생성 했으니 delete 해야 합니다.
}

물론 장성호님께서 번역 하신 함수도 같이 소스에 포함 되어야겠죠 ?
위 소스는 컴파일 해본건 아니라서 오타가 있을수도 있습니다. ^^;


번외편 님이 쓰신 글 :
: 죄송합니다 ㅠㅠ.. 제가 머리가 나쁜건지 급해서 그러는건지 모르지만
: 잘 안되네요..
: 성호님이 번역해주신 코드를 어떤 컴포넌트에 입력해야하는지
: 직접 눈으로 확인하려면 어떻게 하는지 알고 싶습니다.
: 그럼 많은 도움 부탁드립니다..
:
:
: 장성호 님이 쓰신 글 :
: : 위 답변에 링크된 팁의 코드는
: : http://delphi.borlandforum.com/impboard/impboard.dll?action=read&db=del_tip&no=235
: : function LocalIPList: TStrings;
: : type
: :   TaPInAddr = array[0..10] of PInAddr;
: :   PaPInAddr = ^TaPInAddr;
: : var
: :   phe: PHostEnt;
: :   pptr: PaPInAddr;
: :   Buffer: array[0..63] of Char;
: :   I: Integer;
: :   WSAData: TWSAData;
: : begin
: :   WSAStartup(MakeWord(2, 2), WSAData);
: :   Result := TStringList.Create;
: :   Result.Clear;
: :   GetHostName(Buffer, SizeOf(Buffer));
: :   phe := GetHostByName(buffer);
: :   if phe = nil then Exit;
: :   pPtr := PaPInAddr(phe^.h_addr_list);
: :   I := 0;
: :   while pPtr^[I] <> nil do
: :   begin
: :     Result.Add(inet_ntoa(pptr^[I]^));
: :     Inc(I);
: :   end;
: :   WSACleanUp;
: : end;
: :
: :
: : 대충 아래와 같이 C++Builder로 번역이 될것 같습니다.
: :
: : TStringList * LocalIPList()
: : {
: :   char Buffer[64];
: :   int I;
: :   WSADATA wsaData;
: :   PHOSTENT lpHostent = NULL;
: :   struct sockaddr_in addr;
: :   WSAStartup(MAKEWORD( 2, 0 ), &wsaData);
: :   TStringList *Result=new TStringList;
: :   Result->Clear();
: :   gethostname(Buffer, sizeof(Buffer));
: :   lpHostent = gethostbyname(Buffer);
: :   if( lpHostent == NULL )return NULL;
: :   I = 0;
: :   while(lpHostent->h_addr_list[I] != NULL)
: :   {
: :      memcpy( &(addr.sin_addr), lpHostent->h_addr_list[I], lpHostent->h_length );
: :      Result->Add( inet_ntoa(addr.sin_addr) );
: :      I++;
: :   }
: :   WSACleanup();
: :   return Result;
: : }
: :
: :
: : 그럼..
: :
: : 번외편 님이 쓰신 글 :
: : : 허걱 ㅠㅠ;;;
: : : 죄송하지만 제가 델파이를 아예 볼줄 몰라서요..
: : : 가끔 가끔 몇줄은 이해가 가지만 이걸봐도 이해가 되지는 않네요...
: : :
: : : civilian 님이 쓰신 글 :
: : : : http://delphi.borlandforum.com/impboard/impboard.dll?action=read&db=del_tip&no=235
: : : :
: : : : 델파이용이긴 합니다만...
: : : :
: : : : 번외편 님이 쓰신 글 :
: : : : : IP 보는방법을 이런식으로 해봤습니다. 여기까지는 동작이 잘 되는데요
: : : : :
: : : : : void __fastcall TForm1::Timer1Timer(TObject *Sender)
: : : : : {
: : : : : char S[100];
: : : : :
: : : : : in_addr inadd=ClientSocket1->Socket->LookupName("");
: : : : : wsprintf(S,"%d.%d.%d.%d",inadd.S_un.S_un_b.s_b1
: : : : :                         ,inadd.S_un.S_un_b.s_b2
: : : : :                         ,inadd.S_un.S_un_b.s_b3
: : : : :                         ,inadd.S_un.S_un_b.s_b4);
: : : : :
: : : : :
: : : : :       Label9->Caption = S;
: : : : : }
: : : : :
: : : : : 그런데 저는 IP 2개(랜카드 2개) 다 보고 싶습니다.
: : : : : 위 방법을 2개를 써서 해보니 한개의 IP만 잡히네요.
: : : : : 위와 같은 방법으로는 2개를 잡을수가 없는건지
: : : : : 안된다면 어떤방법으로 잡아야하는지 알려주셨으면 합니다.

+ -

관련 글 리스트
53047 또 질문이 있습니다.. 번외편 1244 2008/04/08
53048     Re:또 질문이 있습니다.. civilian 1186 2008/04/08
53049         Re:Re:또 질문이 있습니다.. 번외편 1132 2008/04/08
53050             Re:Re:Re:또 질문이 있습니다.. 장성호 1388 2008/04/08
53051                 Re:Re:Re:Re:또 질문이 있습니다.. 번외편 1233 2008/04/08
53053                     Re:Re:Re:Re:Re:또 질문이 있습니다.. 이점한 1145 2008/04/08
53054                         Re:Re:Re:Re:Re:Re:또 질문이 있습니다.. 번외편 1323 2008/04/08
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.