컴퓨터 공부/네트워크 프로그래밍 41

[TCP/IP 소켓 프로그래밍] 22. Completion Port 입출력 모델

※ 일반적인 쓰레드기반 다중 서버... 서버쪽 쓰레드 하나가 하나의 소켓을 전담한다. 서버쪽 쓰레드가 계속해서 일하는 것이기 아니기 때문에 소켓과 쓰레드가 1:1 대응되는 것은 서버에 부담이 된다. 1. 리소스 부담... 2. context switching이 빈번하게 발생하기 때문... ※ 소켓의 수는 줄일 수 없다. 하지만..

[TCP/IP 소켓 프로그래밍] 21. Overlapped 입출력 모델

21-1. Overlapped 입출력의 의미 비중첩 데이터 입출력 모델 중첩된 데이터 입출력 모델 하나의 쓰레드 내에서 여러 개의 입출력이 진행되는 것 21-2. Overlapped 입출력을 위한 기본 단계 1. Overlapped 소켓의 생성 SOCKET WSASocket( __in int af, __in int type, __in int protocol, __in LPWSAPROTOCOL_INFO lpProtocolInfo, __in GROUP g, __in DWORD ..

[TCP/IP 소켓 프로그래밍] 20. 동기와 비동기의 이해

1. 비동기 Notification의 의미 인터넷 계층 Link계층 : 물리 + 데이터링크 IP계층 TCP/UDP계층 : 송수신 버퍼가 생성된다. 응용프로그램 계층 동기화된 입력 및 출력 함수의 호출 동기화 : 함수의 호출과 행위의 시작, 함수의 리턴과 행위의 종료가 일치함. 데이터 전송 종료 : Application -> TCP계층으로 데이터를..

[TCP/IP 소켓 프로그래밍] 19. 윈도우즈 기반 쓰레드 동기화

※ 커널 오브젝트가 생성될 때는 non-signaled 상태에 있다가 종료하는 경우에 signaled상태로 바뀐다. ※ nonsignaled상태이면 WaitForSingleObject가 멈추고 그렇지 않으면 통과(리턴)할 수 있다. 19-1. 쓰레드 동기화 기법의 분류 프로세스 실행의 두 가지 모드 사용자 모드(User Mode)와 커널 모드(Kernel Mode) user mode : 시..

[TCP/IP 소켓 프로그래밍] 18. 윈도우즈 기반 쓰레드 사용하기

18-1 커널 오브젝트(Kernel Objects) 커널 오브젝트 시스템 리소스의 정보를 담고 있는 데이터 블록(윈도우즈 기반에서만) 시스템(운영체제)이 관리한다. 18-2. 윈도우즈 기반의 쓰레드 생성 ※ CreateThread, _beginthreadex 차이점 http://lustformori.tistory.com/entry/C-Run-Time-Library의-beginthread-Win32-API의-CreateThread를-구분하는..

[TCP/IP 소켓 프로그래밍] 17. 입력과 출력 스트림의 완벽 분리

17-1. 프로세스(Process)와 쓰레드(Thread) 쓰레드란 무엇인가? 경량화된 프로세스 동시 실행 가능. 프로세스와 차이점 스택, PC를 포함한 레지스터 복사본, 쓰레드 지역 보관영역을 제외한 나머지 메모리 영역을 공유. ※ fork를 통해 프로세스 복사했다면 부모와 자식 프로세스는 서로 독립적으로 작동한다. ..

[TCP/IP 소켓 프로그래밍] 16. 입력과 출력 스트림의 완벽 분리

16-1. 스트림의 분리 입출력 스트림의 분리 입력을 위한 파일포인터와 출력을 위한 파일 포인터를 독립적으로 유지. 스트림을 분리하는 이유 프로그래밍을 단순하게 한다. 입출력 겸용 스트림의 경우 입출력 작업 전환시 버퍼를 비워야 한다. 일반적인 프로그래밍 방식. 주의할 사항 출력 스트림 종료..

[TCP/IP 소켓 프로그래밍] 15. 소켓과 표준 입출력

15-1. 표준 입출력 함수의 장점 표준 입출력 함수의 장점 이식성이 좋아진다. - 모든 시스템은 ANSI 표준 C를 지원한다. 효율성을 높일 수 있다. - 표준 입출력 함수에 의한 버퍼를 제공받는다. (표준 입출력버퍼, 소켓 버퍼) - 소켓 생성 버퍼 목적 : 프로토콜의 완성을 위한 것. - 표준 입출력 버퍼 목적 : 성..

[TCP/IP 소켓 프로그래밍] 14. Multicast & Broadcast

유선 : 고객에게 서비스를 제공. 멀티캐스트 방식(가입이 필요) 안테나 방송 : 서비스를 지정된 채널로 제공. 브로드캐스트 방식(가입 필요 없음) 14-1. 멀티캐스트(Multicast) 멀티캐스트 전송 방식. UDP를 기반으로 하는 전송 방식. 멀티캐스트 그룹(클래스 D에 속하는 IP주소)을 기반으로 멀티캐스트 패킷을 ..

[TCP/IP 소켓 프로그래밍] 13. 고급 입출력 함수

13-1. recv & send 입출력 함수 read & write 함수와 달리 데이터 입출력 방법에 있어서 옵션 부여. #include<sys/types.h> #include<sys/socket.h> int recv(int sock, void *buf, int len, unsigned int flags); int send(int sock, const void * buf, int len, unsigned int flags); 옵션의 종류와 의미 - MSG_DONTROUTE (send 함수 호출시에만 사용하는 옵션) ..