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
[53051] Re:Re:Re:Re:또 질문이 있습니다..
번외편 [wifemylove] 1233 읽음    2008-04-08 15:32
죄송합니다 ㅠㅠ.. 제가 머리가 나쁜건지 급해서 그러는건지 모르지만
잘 안되네요..
성호님이 번역해주신 코드를 어떤 컴포넌트에 입력해야하는지
직접 눈으로 확인하려면 어떻게 하는지 알고 싶습니다.
그럼 많은 도움 부탁드립니다..


장성호 님이 쓰신 글 :
: 위 답변에 링크된 팁의 코드는
: 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:또 질문이 있습니다.. 이점한 1146 2008/04/08
53054                         Re:Re:Re:Re:Re:Re:또 질문이 있습니다.. 번외편 1323 2008/04/08
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.