// WIn32 콘솔 프로그램
// 참고로 ws2_32.lib 를 링크 시켜야 함.
#include <winsock2.h>
#include <windows.h>
#include <iostream.h>
#include <stdio.h>
//using namespace std;

// 도메인 이름 -> IP주소로 변환시켜주는 함수
BOOL GetIPAddr(char *name, IN_ADDR *addr)
{
 HOSTENT *ptr = gethostbyname(name);
 if(ptr == NULL)
 {
  MessageBox(NULL,"호스트 네임 받아오는데 실패","실패",MB_OK);
  return FALSE;
 }
 memcpy(addr, ptr->h_addr_list, ptr->h_length);
 return TRUE;
}

//IP주소 -> 도메인 이름
BOOL GetDomainName(IN_ADDR addr, char *name)
{
 HOSTENT *ptr = gethostbyaddr((char *)&addr, sizeof(addr), AF_INET);
 if(ptr == NULL)
 {
  MessageBox(NULL,"도메인 네임 받기 실패","실패",MB_OK);
  return FALSE;
 }
 strcpy(name, ptr->h_name);
 return TRUE;
}

// nslookup 과 같은 프로그램.
int main(int argc, char* argv[])
{
 // 윈속 초기화
 WSADATA wsa;
 if(WSAStartup(MAKEWORD(2,2), &wsa) != 0)
  return -1;
 MessageBox(NULL,"윈속 초기화 성공", "성공",MB_OK);

 char ipaddress[256];
 cout << "IP주소 입력 하시오 " <<endl;
 gets(ipaddress);
 
 IN_ADDR addr;
 if(GetIPAddr(ipaddress, &addr))
 {
  cout << "IP 주소 " << inet_ntoa(addr) << endl;

  if(GetDomainName(addr,ipaddress))
  {
   cout << "도메인 네임 " << ipaddress << endl;
  }
 }

 // 윈속 종료
 WSACleanup();
 return 0;
}


 //---------- 소켓 생성 부분 ----------//
/* // TCP 소켓 생성
 SOCKET tcp_sock = socket(AF_INET, SOCK_STREAM, 0);
 if(tcp_sock == INVALID_SOCKET)
 {
  cout << "소켓 에러" << endl;
  return -1;
 }
 MessageBox(NULL,"TCP 소켓 생성 성공","성공",MB_OK);

 // UDP 소켓 생성
 SOCKET udp_sock = socket(AF_INET, SOCK_DGRAM, 0);
 if(udp_sock == INVALID_SOCKET)
 {
  cout << "소켓 에러" << endl;
  return -1;
 }
 MessageBox(NULL,"UDP 소켓 생성 성공","성공",MB_OK);

 // 소켓 구조체 초기화
 SOCKADDR_IN addr;
 ZeroMemory(&addr, sizeof(addr));
 addr.sin_family = AF_INET;
 addr.sin_addr.s_addr = inet_addr("147.46.114.70");
 addr.sin_port = htons(9010);

 char *ipaddr = "147.46.114.70";
 cout << ipaddr << endl;

 cout << "IP 주소 숫자 변환 " << inet_addr(ipaddr) <<endl;

 IN_ADDR temp;
 temp.s_addr = inet_addr(ipaddr);
 cout << "IP 주소 우리가 보게 만들기 " << inet_ntoa(temp) << endl;


 //---------- 소켓 종료 부문 ----------//
 closesocket(tcp_sock);
 closesocket(udp_sock);
*/

// WIn32 콘솔 프로그램
// 참고로 ws2_32.lib 를 링크 시켜야 함.
#include <winsock2.h>
#include <stdio.h>

int main(int argc, char* argv[])
{
 // 윈속 초기화
 WSADATA wsa;
 if(WSAStartup(MAKEWORD(2,2), &wsa) != 0)
  return -1;
 MessageBox(NULL,"윈속 초기화 성공", "성공",MB_OK);

 //********* 소켓 생성 부분 *********//
 // TCP 소켓 생성
 SOCKET tcp_sock = socket(AF_INET, SOCK_STREAM, 0);
 if(tcp_sock == INVALID_SOCKET)
 {
  printf("소켓 에러");
  return -1;
 }
 MessageBox(NULL,"TCP 소켓 생성 성공","성공",MB_OK);

 // UDP 소켓 생성
 SOCKET udp_sock = socket(AF_INET, SOCK_DGRAM, 0);
 if(udp_sock == INVALID_SOCKET)
 {
  printf("소켓 에러");
  return -1;
 }
 MessageBox(NULL,"UDP 소켓 생성 성공","성공",MB_OK);

 //********* 소켓 종료 부문 *********//
 closesocket(tcp_sock);
 closesocket(udp_sock);

 // 윈속 종료
 WSACleanup();
 return 0;
}


// 교수님 홈페이지 : www.cs.hongik.ac.kr/~smjang/socket/
// 교수님 메일 : mysonhan@empal.com

사용자 삽입 이미지

버젼업이 느려졌습니다.
바뀐점은.. 일단.. 거의 없습니다.. 대화상자 조금 바꾸고..
아.. 윈도우 종료시, 현제 사전 카운터가 제대로 레지스트에 저장이 안되는 문제점 해결했습니다.
그거외엔.. 바뀐점은 없습니다.

윈 2000에선 RGB(0,255,0) 색이 투영이 안되고 그대로 보이신다는 분이 계셨는데..
제 생각엔... 윈2000의 GDI+ 쪽 문제가 아닐까 생각되네요..
(그 이전에 이프로그램.. 윈 9X버젼에선 보장 못합니다.. 유니코드 문제 때문에...)
나중에 조치를 취해 놓겠습니다...


파일 다운로드 --->

사용법등, 주절주절은.. Readme.txt 파일을 봐주세요
스킨 설정법등이 있습니다.

'대학생 졸업하기 전 레벨 > MFC 수업 결과' 카테고리의 다른 글

J-Study ver 2.2  (0) 2007.09.16
J-Study 소스  (0) 2007.09.12
J-Study  (0) 2007.09.12
J-Study.. 2.0beta  (0) 2007.04.04
J-Study... 1.97b [일본어 한자 학습 (세뇌..)]  (0) 2007.02.15
일본어 한자 학습 (세뇌..)ver 1.97  (0) 2007.02.06
사용자 삽입 이미지

프로그램 다운로드 ☞
현제까지
수정된 사항으로, 위치이동후 레지스트리 바로 기억 시키도록 했고..
 
폰트.. 이거 별로 조정해봤자 의미도 없는거 셋팅 잘못되면, 아예 일어 폰트 깨지는거...
아예 없앴습니다. ㅡㅡ..
 
기본 폰트인 굴림체로 나오게 했습니다.
 
그리고 다른 변화로 BMP 파일을 벗어나 PNG 파일로 바꿧습니다 .
물론 사용법은 똑같습니다. 투명색 RGB(0,255,0)인 진녹색 사용 같고
그저. 그림 알고리즘만 바꿧습니다. ㅡㅡa
 
 

'대학생 졸업하기 전 레벨 > MFC 수업 결과' 카테고리의 다른 글

J-Study ver 2.2  (0) 2007.09.16
J-Study 소스  (0) 2007.09.12
J-Study  (0) 2007.09.12
J-Study.. 2.0beta  (0) 2007.04.04
J-Study... 1.97b [일본어 한자 학습 (세뇌..)]  (0) 2007.02.15
일본어 한자 학습 (세뇌..)ver 1.97  (0) 2007.02.06

+ Recent posts