2008년 12월 29일 월요일

Visual C++에서 제공하는 MFC 라이브러리에서 제공하는 소켓관련 클래스

버클리 소켓과 윈속의 차이점은 무엇인가?

Unix는 선점형 이고 윈도우는 비선점형이라는 것이 근본적인 차이점이다. 물론 window 95는 선점형이기는 하지만 약간은 불완전한 구조로 되어 있으며 window NT는 상당히 완전적인 선점형이다.
여기에서 문제가 되고 있는 것은 데이터를 주고받는 것에 관련된 블록킹 모드의 함수들이다.
소켓에서 사용되는 함수들을 호출하게 되면 그 작업이 끝나기 전까지는 블록킹 상태가 된다.
윈속에서는 이러한 문제를 해결하기 위해서 다양한 종류의 API함수들을 제공하고 있고 추가적으로 Visual C++에서 제공하는 MFC라이브러리에서 제공하는 소켓관련 클래스는 이러한 문제점을 추상화 하고 캡슐화 하고 있기 때문에 쉽게 네트워크 프로그램을 할 수 있게 한다.
----------------------------------------------------------------------------
Winsock관련 클래스

MFC에서는 Winsock에 관련된 많은 API를 추상화한 세가지 소켓관련 클래스를 제공하는데 다음에 나오는
CAsyncSocket, CSocket, CScoketFile클래스가 바로 그런 것이다.
----------------------------------------
CAsyncSocket

CAsyncSocket클래스는 윈도우 소켓을 나타내는데 이는 MFC와 함께 윈도우 소켓을 사용하려는 프로그램머에게 객체지향의 추상화를 제공하도록 윈도우 소켓 API를 캡슐화 한다.
CAsyncSocket클래스를 사용하려면 네트워크 통신에 대해서 어느정도의 지식이 필요하며 개발자는 유니코드와 MBCS(multi byte Character Set)문자열 사이에 블록을 주고 바이트 순서와 변환을 처리하여야 한다. 이 사항에 대한 좀더 자세한 인터페이스는 CSocket클래스를 참고하도록하자.
CAsyncSocket클래스를 사용하기 위해서는 먼저 소켓 핸들을 생성하기 위하여 Create함수를 호출한다.서버 소켓에 대하여는 Listen멤버 함수를 호출하고 클라이언트 소켓에 대하여는 Connect를 멤버 함수를 호출한다. 서버 소켓은 연결 요청을 받을 때는 Accept함수를 호출하여야 한다.
소켓들 사이에서 통신을 하기 위하여 CAsyncSocket클래스의 멤버 함수를 사용한다.
-------------------------------------
CSocket

CSocket은 CAsyncSocket에서 파생되며 윈도우 소켓 API의 캡슐화를 좀더 상위레벨에서 구현한 것이다. 즉 CSocket클래스는 CAsyncSocket클래스보다는 윈도우 소켓 API를 고수준에서 캡슐화 한 것이다.
CSocket은 데이터를 보내고 받는 것을 관리하는 클래스 CSocketFile과 CArchive와 함께 동작한다. 또한 CSocket클래스는 CArchive의 동기화 처리에 필수적인 부분들을 제공한다.
receive.Send,ReceiveFrom,SendTo와 Accept(모두 CAsyncSocket에서 계승)와 같은 함수들은 CSocket에서는 WSAWOUIDBLOCK와 같은 에러를 반환하지 않는다. 그대신에 이 함수들은 처리가 완료될 때 까지 기다린다(즉 Blocking)CSocket클래스를 사용하기 위해서는 먼저 생성자를 호출하고 SOCKET핸들을 생성하기 위해서 Create함수를 호출한다.Create의 디폴트 인자는 스트림 소켓을 생성하지만 CArchive객체와 함께 소켓을 사용하지 않는다면 데이터그램 소켓을 생성하기 위하여 파라메타를 지정하거나 서버 소켓을 생성하기 위해서 특정 포트에 연결할 수도 있다.
클라이언트 측에서는 Connet,서버측에서는 Accept를 사용하여 클라이언트 소켓에 연결한다.
그런다음 CSocketFile 객체를 생성하고 CSocketFile 생성자에 있는 CSocket객체에 붙인다. 그 다음에 데이터를 보내고 받기위해서 CArchive 객체를 생성하고 CArchive생성자에 있는 CSocket객체와 연결한다. 통신이 완료되면 CArchive,CSocketFile과 CSocket객체를 파괴한다.

----------------------------------------------------------
CSocketFile

이 객체는 윈도우 소켓을 사용하여 네트워크에서 데이터를 보내고 받는데 사용되는 CFile클래스와 비슷한 클래스이다.
보통 MFC 직렬화를 사용하여 데이터를 보내고 받는 것처럼 코드를 구현하기 위해서 CSocketFile객체를 CArchive객체와 함께 사용하게 된다. 데이터를 직렬화 하기 위해여 CSocket객체에 데이터를 쓰기 위한 CSocketFile 멈버함수를 호출하여 아카이브 객체에 삽입하면 되는 것이다.
CSocketFile을 사용하는 것 외에도 부모 클래스인 CFile와 같이 CSocketFile클래스를 단독으로 사용할 수도 있다. 아카이브되는 MFC직렬화 함수와 함께 CSocketFile클래스를 사용할 수 있다.CSocketFile클래스는 CFile클래스의 모든 기능을 지원하지는 않기 때문에 몇가지 MFC의 직렬화 함수들은 CSocketFile클래스에서는 사용할 수 없다.

그룹 Kinky의 ‘Superman Es illegal’

9살 소년의 천진한 눈을 통해 위트를 잊지 않는다. “슈퍼맨은 영주권도 없으면서 어떻게 일할 수 있나. 세금도, 면허증도 없이 하늘을 나는 클립톤 행성의 슈퍼맨을 쫓아버리자.” 만화 같은 상상력으로 풀어낸 가사의 노래가 흐르는 순간, 현실의 시름을 잊고 희망을 품게 한다.

[언더 더 세임 문]은 [원스], [미스 리틀 선샤인] 등 할리우드 시스템 바깥의 좋은 영화들을 소개해온 폭스 서치라이트사의 작품이다. 멕시코 출신 파르리샤 리겐 감독의 장편 데뷔작으로, 멕시코 영화계의 면면을 확인할 수 있다. 까를리토스로 열연한 아드리안 알론소는 어린 아이의 목소리로 전장의 실상을 전한 [이노센트 보이스]와 안토니오 반데라스의 아들로 출연한 [레전드 오브 조로] 등에서 얼굴을 알린 아역배우다. 멕시코 대배우 에릭 델 까스틸로의 딸이자 최고 여배우로 꼽히는 케이트 델 카스틸로가 엄마 로사리오로 출연했고, 까를리토스의 길동무이자 대리 아버지로 등장한 엔리께는 유명 코미디언 유지니오 다베즈가 맡았다. 인기 미국드라마 <어글리 베티>의 '베티' 아메리카 페레라가 잠시 얼굴을 비추기도 한다. 그밖에 LA로 향하는 여행길에 까를리토스와 엔리께를 버스에 태워주는 밴드는 그래미 상을 수상한 '로스 타이거스 델 노테'로, 영화음악에 참여했다.

2008년 12월 16일 화요일

VMware Player 공유

VMWare를 사용할 때 VMWare 내의 OS에서 인터넷을 사용하려면 VMWare의 네트워크 설정은 Brigde(브릿지)로 설정하여 추가적으로 IP를 할당받아 사용하는 경우가 많다.

하지만 이동이 잦은 노트북이나 가정에서 ADSL 혹은 광랜 같은 서비스를 이용할 경우 추가적인 IP를 사용할 경우 추가적인 IP를 할당 받을 수 없기 때문에 사용상 제약이 따른다.

이럴 땐 VMWare의 NAT를 설정하면 VMWare상에서 실행 중인 가상 머신에서 인터넷을 사용하거나 PC가 속한 네트워크의 다른 서버로 접근이 가능하다.

2008년 12월 3일 수요일

나이브

마돈나(오른쪽)과 브리트니 스피어스가 7일 로스앤젤리스 다저스타디움에서 열린 마돈나의 끈적이고 달콤한 투어(Madonna's Sticky and Sweet tour)에서 함께 노래를 부르고 있다.