본문 바로가기

[+] Information/[-] Network

[2009/07/07] I/O 멀티플렉싱 1. 멀티플렉싱이란? - 멀티플렉싱이란? 1) 하나의 전송로를 여러 사용자가 동시에 사용해서 효율성을 극대화 하는 것 2. I/O 멀티플렉싱 기반의 서버 - I/O 멀티플렉싱이란? 1) 클라이언트와의 입/출력을 담당하는 프로세스를 하나로 묶어버리는 형식. 2) 프로세스가 고속의 전송로에 해당한다. 3. 멀티 프로세스 vs 멀티플렉싱 - 멀티 프로세스 기반의 서버 1) 클라이언트와 서버간의 송수신 데이터 용량이 큰 경우. 2) 송수신이 연속적으로 발생 하는 경우에 적합. - 멀티플렉싱 기반의 서버 1) 클라이언트와 서버간의 송수신 데이터 용량이 작은 경우. 2) 송수신이 연속적이지 않은 경우에 적합. 3) 멀티 프로세스 기반의 서버에 비해 많은 수의 클라이언트 처리에 적합. 더보기
[2009/07/03] 가위 바위 보 게임 예제소스(ipcgame_serv.c, ipcgame_clnt.c) /* ipcgame_serv.c */ #include #include #include #include #include #include #include #include #include #define BUFSIZE 100 void error_handling(char *message); void z_handler(int sig); int who_win(int a, int b); int main(int argc, char **argv) { int fd1[2], fd2[2]; char buffer[BUFSIZE]; char intro[]="입력 하세요(가위:0, 바위:1, 보:2) : "; /*바이트 비교시 48, 49, 50.*/ char win[] = "축하 합니다 당신이 이겼습니다. \n"; char los.. 더보기
[2009/07/03] 가위 바위 보 게임 1. 가위 바위 보 게임 구조 - 파이프 생성. - 자식 프로세스 생성. - 데이터 입력(가위 바위 보 선택) - 파이프 통해 데이터 전송(자식->부모) - 승자 확인! - 결과 전송(부모->자식) 더보기
[2009/07/03] 프로세스간 통신2 예제소스(pipe2.c, pipe3.c) /* pipe2.c */ #include #include #include #define BUFSIZE 30 int main(int argc, char **argv) { int fd[2]; char buffer[BUFSIZE]; pid_t pid; int state; state = pipe(fd); if(state == -1){ puts("pipe() error"); exit(1); } pid = fork(); if(pid == -1){ puts("fork() error"); exit(1); } else if(pid==0){ /*자식 프로세스의 경우 */ write(fd[1], "Good!", 6); sleep(2); read(fd[0], buffer, BUFSIZE); printf("자식 프로세스 출력 .. 더보기
[2009/07/03] 프로세스간 통신2 1. 파이프의 특성 - 파이프는 fork 함수에 의해서 복사 되지 않는다. 1) 파이프의 입 출력을 의미하는 파일 디스크립터가 복사 되는 것이다. - 파이프는 방향성이 존재하지 않는다. 2. 양방향 통신을 위한 파이프의 생성 - 하나의 파이프는 하나의 용도로만 사용한다. 1) A 프로세스에서 B 프로세스로 데이터 전송하기 위한 파이프 하나. 2) B 프로세스에서 A 프로세스로 데이터 전송하기 위한 파이프 하나. 더보기