본문 바로가기

소켓 프로그래밍 예제소스

[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] 프로세스간 통신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/06/28] 예제소스(pipe1.c) /* pipe1.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\n", 6); }.. 더보기
[2009/06/27] 예제소스(echo_multiserv.c, echo_multiclnt.c) /* echo_multiserv.c */ #include #include #include #include #include #include #include #include #include #define BUFSIZE 30 void error_handling(char *message); void z_handler(int sig); int main(int argc, char **argv) { int serv_sock; int clnt_sock; struct sockaddr_in serv_addr; struct sockaddr_in clnt_addr; struct sigaction act; int addr_size, str_len, state; pid_t pid; char message[BUFSIZE]; if(.. 더보기
[2009/09/24] 시그널 핸들링 예제소스(sigint.c, sigint2.c, sigalrm.c, zombie_handler.c) /* sigint.c */ #include #include #include void handler(int sig); int main(int argc, char **argv) { int state; int num=0; signal(SIGINT, handler); while(1) { printf("%d : 대기중 \n", num++); sleep(2); if(num>5) break; } return 0; } /*시그널 처리 함수 */ void handler(int sig) { signal(SIGINT, handler); printf("전달된 시그널은 %d \n", sig); } /* sigint2.c */ #include #include #include void handler(int sig); int mai.. 더보기