BSD socket 기반인 관계로 리눅스 소켓 프로그래밍과 많은 부분이 중복된다. 중복되는 부분의 설명은 링크로 대신할 것이다.
ㅡ,ㅡ
개발환경 만들기
windows xp를 개발환경으로 하기로 했다. 리눅스(:12)도 계속해서 사용해야 하는 상황. 그때 그때 리부팅을 할 수는 없는 노릇이라서 virtualbox(:12)를 이용 가상환경을 만들기로 했다. 호스트 운영체제(:12)는 리눅스이고 게스트 운영체제로 윈도 xp와 윈도 7을 설치했다.
리눅스 BSD 소켓프로그래밍에서 winsock 으로 넘어가기
공부 했던 것을 대략 정리 해보자면.
일단 개발환경은 visual studio 2008 로 했음. 공짜로 사용할 수도 있음.
개발환경을 제외하면 차이가 없음. BSD:::socket(:12)기반이니 당연할지도.
BSD 소켓 인터페이스 외에, 윈속 확장 함수들을 별도로 제공한다. 이들 확장 함수들은 "WSA"로 시작한다. 윈도의 독자적인 기술들 즉 overlapped(중첩) I/O 모델, 이벤트 객체의 구현 기술을 이용하려면 이들 확장 함수를 이용해야 한다.
중요한 것은 IDE를 이용한 개발환경에 적응하는 것과 overlapped과 멀티쓰레드 프로그래밍, 이들의 응용이라고 할 수 있는 IOCP 기술을 익히는 것인 것 같다.
그리고 중요한 점
아 역시 vi(:12)가 최고.
vs 는 손 맛이 떨어짐.
리눅스 shell(:12) 좋다. 윈 cmd로 창띄어서 테스트 할려니 짜증이 물밀듯이 밀려온다. MinGW(:12), cygwin(:12) 등을 고민해봐야 하나.
아래 방식으로 공부해볼 생각
winsock은 리눅스 네트워크:::프로그래밍(:12)과 별차이 없는 듯하니, 개발환경에 익숙해질 겸 프로그램 몇개 만들면서 훑어보고.
멀티 프로세스, 멀티 쓰레드(:12) 환경을 중점적으로
입출력, IPC(:12) 관련 내용들 살펴보고
IOCP 응용
감잡은 다음에 QT(:12)로 넘어가기.
MFC, CSocket는 걍 건너 뛰고 싶다.
ACE 같은 것도 괜찮을 것 같기는 하지만...
SOCKET 데이터 타입
윈속은 SOCKET 데이터 타입을 사용한다. SOCKET는 unsigned int의 typedef형 이다. 그러므로 BSD:::socket(:12)과 크게 다를 건 없다 하겠다. 굳이 SOCKET를 사용할 필요가 없긴 하다. int 형을 써도 된다.
bsd 소켓의 socket함수는 int형을 반환한다는 점에 주의해야 한다. 다른 운영체제로 포팅할 경우 컴파일 시 경고 메시지가 발생할 수도 있다. 윈속 socket함수에서 에러 값인 INVALID_SOCKET은 ~0으로 정의되어 있다.
비록 에러 처리에 문제가 되진 않지만 SOCKET 자료 형을 쓰는게 나은 것 같다.
문서들
제목
저자
변경일
winsock api
슬슬 정리해 나가야지 윈속 확장 함수를 먼저 정리할 계획이었는데, 어찌하다 보니 BSD 소켓 함수들을 우선 정리하게 됐다.
Contents
윈도우즈 네트워크 프로그래밍
개발환경 만들기
리눅스 BSD 소켓프로그래밍에서 winsock 으로 넘어가기
SOCKET 데이터 타입
문서들
winsock api
Recent Posts
Archive Posts
Tags