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 socket 기반인 관계로 리눅스 소켓 프로그래밍과 많은 부분이 중복된다. 중복되는 부분의 설명은 링크로 대신할 것이다. ㅡ,ㅡ개발환경 만들기
리눅스 BSD 소켓프로그래밍에서 winsock 으로 넘어가기
- 일단 개발환경은 visual studio 2008 로 했음. 공짜로 사용할 수도 있음.
- 개발환경을 제외하면 차이가 없음. BSD:::socket(:12)기반이니 당연할지도.
- BSD 소켓 인터페이스 외에, 윈속 확장 함수들을 별도로 제공한다. 이들 확장 함수들은 "WSA"로 시작한다. 윈도의 독자적인 기술들 즉 overlapped(중첩) I/O 모델, 이벤트 객체의 구현 기술을 이용하려면 이들 확장 함수를 이용해야 한다.
 
- 리눅스는 socket이 커널모듈이라서 딱히 링크시킬 필요가 없는데, 윈도우즈는 라이브러리(:12)를 로딩하고 컴파일(:12)시 링크를 시켜줘야 함. 
- WSAStartup() 으로 winsock.dll 로딩 
- ws2_32.lib 를 링크시켜야 줘야함.
 
- 중요한 것은 IDE를 이용한 개발환경에 적응하는 것과 overlapped과 멀티쓰레드 프로그래밍, 이들의 응용이라고 할 수 있는 IOCP 기술을 익히는 것인 것 같다.
그리고 중요한 점- 아 역시 vi(:12)가 최고.
- vs 는 손 맛이 떨어짐.
- 리눅스 shell(:12) 좋다. 윈 cmd로 창띄어서 테스트 할려니 짜증이 물밀듯이 밀려온다. MinGW(:12), cygwin(:12) 등을 고민해봐야 하나.
아래 방식으로 공부해볼 생각SOCKET 데이터 타입
문서들
winsock api
Recent Posts
Archive Posts
Tags