폼에 리스트 박스 하나 추가하고 테스트한다.
gethostbyaddr의 타임아웃 문제는 고려하지 않았다.
WSAData wsadata;
if(WSAStartup (MAKEWORD(1,1), &wsadata) != 0 )
{
ShowMessage("에러");
}
char ip[16];
in_addr addr;
hostent *host = 0;
String errorcode;
for(int i=0;i<255;i++)
{
sprintf(ip,"211.178.64.%d",i);
addr.S_un.S_addr = inet_addr(ip);
host = gethostbyaddr ( (char *)(&addr.S_un.S_addr), sizeof(addr.S_un.S_addr), AF_INET);
int error = WSAGetLastError();
switch(error)
{
case WSANOTINITIALISED :
errorcode = "WSANOTINITIALISED";
break;
case WSAENETDOWN :
errorcode = "WSAENETDOWN";
break;
case WSAHOST_NOT_FOUND :
errorcode = "WSAHOST_NOT_FOUND";
break;
case WSATRY_AGAIN :
errorcode = "WSATRY_AGAIN";
break;
case WSANO_RECOVERY :
errorcode = "WSANO_RECOVERY";
break;
case WSANO_DATA :
errorcode = "WSANO_DATA";
break;
case WSAEINPROGRESS :
errorcode = "WSAEINPROGRESS";
break;
case WSAEAFNOSUPPORT :
errorcode = "WSAEAFNOSUPPORT";
break;
case WSAEFAULT :
errorcode = "WSAEFAULT";
break;
}
if(host != NULL)
ListBox1->Items->Add( host->h_name);
else
{
ListBox1->Items->Add(errorcode);
}
}
String msg = "테스트가 끝났습니다.";
ShowMessage(msg);
'Computer > C++' 카테고리의 다른 글
void pointer 샘플 (2) | 2005.07.10 |
---|---|
파일의 버젼 정보 얻기 (2) | 2003.12.14 |
TStingList이용해서 텍스트 파일 파싱하기 (2) | 2003.11.16 |
Effective C++ Second Edition (139) | 2003.10.13 |
Child control 관리 (2) | 2003.09.15 |
C++ 사이트 모음 (139) | 2003.04.08 |
C와 C++의 name mangling (139) | 2003.03.04 |
BCB에서 ADO 이용해 간단한 프로그램 만들기 (141) | 2002.05.26 |
컴포넌트 설치할때 등록되는 팔레트 변경 (143) | 2002.05.24 |
C++ 빌더에서 쓰레드 사용 샘플소스 (141) | 2002.05.21 |