์ด ๋ ํฌ์งํ ๋ฆฌ๋ ์ปดํจํฐ ๋คํธ์ํฌ ์์ผ ํ๋ก๊ทธ๋๋ฐ ์ค์ต ํ๋ก์ ํธ๋ค์ ํฌํจํฉ๋๋ค.
C ์ธ์ด๋ฅผ ํ์ฉํ์ฌ AF_UNIX ๋ฐ AF_INET ์์ผ, ๋ฉํฐํด๋ผ์ด์ธํธ ์๋ฒ, select ๊ธฐ๋ฐ ๋ค์ค ์ฑํ
์๋ฒ ๋ฑ์ ๊ตฌํํ์์ต๋๋ค.
๋ํ, ์๊ทธ๋ ํธ๋ค๋ง ๋ฐ ํ์ผ ์ ์ก ๊ธฐ๋ฅ๋ ํฌํจ๋์ด ์์ผ๋ฉฐ, ๋ค์ํ ๋คํธ์ํฌ ํต์ ๊ธฐ๋ฒ์ ์ค์ตํฉ๋๋ค.
- ๊ธฐ๋ฅ: AF_UNIX ๋ฐ AF_INET ์์ผ์ ํ์ฉํ 1:1 ํต์ ๋ฐ ๋ฉํฐ์๋น์ค ์๋ฒ ๊ตฌํ
- ์ฌ์ฉ ๊ธฐ์ :
AF_UNIX,AF_INET,SOCK_STREAM,fork(),pthread - ์ฃผ์ ํ์ผ:
af_unix_server.c,af_unix_client.cโ UNIX ๋๋ฉ์ธ ์์ผ ๋ฉ์์ง ์ ์กaf_inet_server.c,af_inet_client.cโ TCP ๊ธฐ๋ฐ 1:1 ์ฑํmulti_service_server.c,multi_service_client.cโ ์ฌ๋ฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋ฉํฐ์๋น์ค ์๋ฒ
- ๊ธฐ๋ฅ:
SIGINT(CTRL+C) ์๊ทธ๋ ์ฒ๋ฆฌ ๋ฐ ๋ฉํฐํด๋ผ์ด์ธํธ Echo ์๋ฒ - ์ฌ์ฉ ๊ธฐ์ :
signal(),fork(),SOCK_STREAM - ์ฃผ์ ํ์ผ:
signal_handler.cโ CTRL+C ์ ๋ ฅ ์ ์ข ๋ฃ ๋ฉ์์ง ์ถ๋ ฅ ํ ์ข ๋ฃecho_server.c,echo_client.cโ ๋ฉํฐํด๋ผ์ด์ธํธ Echo ์๋ฒ
- ๊ธฐ๋ฅ:
select()๋ฅผ ํ์ฉํ์ฌ ์ฌ๋ฌ ํด๋ผ์ด์ธํธ์ ๋น๋๊ธฐ ์ฑํ ์ง์ - ์ฌ์ฉ ๊ธฐ์ :
FD_SET(),FD_ISSET(),select() - ์ฃผ์ ํ์ผ:
select_chat_server.c,select_chat_client.cโ select ๊ธฐ๋ฐ ๋ค์ค ์ฑํ ์๋ฒ
- ํ๋ก๊ทธ๋๋ฐ ์ธ์ด: C
- ์์ผ ํ๋ก๊ทธ๋๋ฐ:
AF_UNIX,AF_INET,SOCK_STREAM - ๋ฉํฐํด๋ผ์ด์ธํธ ์ง์:
fork(),pthread - ๋น๋๊ธฐ ์ด๋ฒคํธ ์ฒ๋ฆฌ:
select() - ์๊ทธ๋ ํธ๋ค๋ง:
SIGINT,signal() - ํ์ผ ์ ์ก:
send(),recv() - ์ฑํ ์๋ฒ: ๋ค์ค ์ฌ์ฉ์ ์ง์, ํด๋ผ์ด์ธํธ ๊ฐ ๋ฉ์์ง ๊ณต์