==========================================================================================
NETWORK
==========================================================================================
<NETWORK>
==2차 : 클라이언트들간 대화 가능하도록 수정
-IPC(Inter Process Communication) : 프로세스간 통신
=IPC종류
-파이프 : 단방향
-메시지 큐
-네임드 파이프
-공유 메모리
-...
=파이프
int fd[2];
pipe(fd);
=익명 파이프
-구심점 : 내부 변수
#include <stdio.h> |
=네임드 파이프
-소스를 완전 분리시 연결할 방법 없다
-구심점 : 중간(Z.TXT)에 가교 요청(ex)- A에서 Z.TXT 열고 B에서도 Z.TXT를 열어 A에서 Z에 내용을 쓰면 B에서 사용 가능)
: mkfifo() => first in first out
-tmp 확인
-확인(구심점 : myfifo_r)
ls -al /tmp/myfifo_r
d(directory) -> p(pipe)
<echoserverpipe.c>
#include <sys/types.h> |
<echoclientpipe.c>
#include <sys/types.h> |
=네임드파이프단점 : 클라이언트 수 만큼 파이프 만들어야 함 => 채팅용으로는 부적합
==유닉스 도메인 소켓
파일 경로
구심점 : 소켓파일
: sockaddr_in -> sockaddr_un
: d(directory) -> s(socket)
: access() : 해당 파일 읽을 수 있는지 체크
<echoserver_udomain.c>
#include <sys/types.h> |
<echoclient_udomain.c>
#include <sys/types.h> |
(적은양의 데이터를 많은 프로세스에서 사용시)
-파일 소켓 단점 : 다중접속은되나 성능이 떨어짐
==공유메모리
: shmget() :
: shmat()
: shmdt()
: shmctl() : 관리
-확인
: ipcs -m
-
<shm_procuder.c>
#include <sys/ipc.h> |
<shm_consumer.c>
#include <sys/ipc.h> |
=
1. 멀티 P : PROCESS 여러개
2. 멀티 T : PROCESS 1개 THREAD 여러개
3. 다중 입출력 : PROCESS 1개