[Linux] IPC 예제 ③ Soket Model (fork 방식)
[ CLIENT ]
1. socket() 함수를 사용하여 서버 소켓 오픈
2. 서버에 connect request 전송
3. 메시지를 보내거나 받음
4. 소켓 클로즈
[ SERVER ]
1. socket() 함수를 사용하여 서버 소켓 오픈
2. 열어놓은 소켓에 서버의 ip, port 바인딩
3. listen() 함수 사용하여 메시지 받을 수 있는 상태 전환
4. 클라이언트가 보낸 request 받고, 파일 디스크립터 생성
5. send()를 통해 메시지 주거나 recv() 통해 받음
6. 열어놓은 소켓 클로즈
소켓은 fork의 방식과 thread의 방식이 존재. 실무에서는 thread를 더 많이 쓰고 선호함
Socket fork 란?
부모 프로세스에서 자식 프로세스를 하나 복제 생성 해주는 역할을 한다
이때 복제 생성시 부모 프로세스와 같은 프로세스가 하나 만들어짐
부모 프로세스에는 자식 프로세스의 PID가 들어가고 자식 프로세스에서는 fork()의 리턴값이 0이 들어가게됨
1. talk_s/ 파일 생성 [생성 후 gcc 명령어로 컴파일 해주기] -- server관련 파일 생성하는 것
2. talk_s/ 파일 생성 [생성 후 gcc 명령어로 컴파일 해주기] -- client 부분 파일 생성해주기
터미널을 2개 열은 후 한쪽에서는 ./talk_s [포트번호] , 다른 한쪽에는 ./talk_c [아이피][포트번호]를 작성하면 서로 채팅하듯이 동시에 쓴 내용이 올라오게 됨
* 서버에서 보낸 메시지가 클라이언트에 실시간으로 전송
* 클라이언트에서도 메시지를 동일하게 send할 수 있음