๋ชฉ๋ก๐ฉ๐ป IoT (Embedded)/Raspberry Pi (42)
๐ ๊ณต๋ถํ๋ ์ง์ง์ํ์นด๋ ์ฒ์์ด์ง?
โญ ๋ฉํฐ๋ฏธ๋์ด ์ธ๊ฐ์ด ์ค๊ฐ์ผ๋ก ์ธ์ํ๋ ์ฌ๋ฌ ๋งค์ฒด๋ค์ ํผํฉ์ ์๋ฏธ '๋ง์', '๋ค์ํ' ์ด๋ผ๋ ๋ป์ ๊ฐ์ง ๋ฉํฐ (Multi) ์ ์ ๋ฌ ๋ฑ์ ์๋จ, ๋ฐฉ๋ฒ, ๋งค์ฒด ๋ค์ ๋ปํ๋ ๋ฏธ๋์ด (Media) ์ ํฉ์ฑ์ด ์ธ๊ฐ์ ๊ฐ๊ฐ๊ธฐ๊ด์ ์ด์ฉํด์ ์๋ฆฌ, ์ด๋ฏธ์ง ๋ฑ์ ์ ๋ณด๋ฅผ ๋ฐ์๋ค์ด๊ณ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์๋ค์ด๊ธฐ ์ํด ๋, ๊ท, ์ฝ, ํ, ํผ๋ถ ์ ์ค๊ฐ์ ์ฌ์ฉํ๋ค ์ธ๊ฐ์ ๊ฐ๊ฐ๊ธฐ๊ด์ ํตํด์ ์ธ์๋๋ ์ ๋ณด๋ฅผ ๋ฏธ๋์ด๋ผ๋ ๋จ์ด๋ก ํํํ ์ ์๋ค ๋์งํธ ๋ฏธ๋์ด๋ ์ผ๋ฐ์ ์ผ๋ก ํ๋์ ๋ฏธ๋์ด๋ง ์ฌ์ฉ๋์ง ์๊ณ ์์ฑ, ์๋ฆฌ, ๋ฌธ์, ๊ทธ๋ฆผ, ๋์์ ๋ฑ์ ๋ฏธ๋์ด๊ฐ ํผํฉ๋ ํํ๋ก ์ฌ์ฉ๋๋๋ฐ, ์ด๋ฅผ ๋ฉํฐ ๋ฏธ๋์ด ๋ผ๊ณ ๋ถ๋ฅธ๋ค ๋์งํธ ๋ฏธ๋์์๋ ์ฌ๋ฌ ๋ฏธ๋์ด ์ค์์๋ ์ฃผ๋ก ์๊ฐ๊ณผ ์ฒญ๊ฐ์ ์ฌ์ฉํ๊ณ ์๋ค โญ ์์ ์ฒด๊ณ ์์์ ๋น์ด ๋ฌผ์ฒด์ ์ํด์ ๋ฐ์ฌ๋์ด์ ์ฌ๋์ ..
โญ ์ฌ๋ฌผ ์ธํฐ๋ท ์ฌ๋ฌผ์ด ์๋ก ์ฐ๊ฒฐ๋๋ ์ธํฐ๋ท, ๋คํธ์ํฌ ํ๊ฒฝ์ด ์ค์ํ๋ค ์ธํฐ๋ท์ ์ํ์ผ ์ผ๋ก๋ถํฐ ๋ฐ์ ํด ์์ผ๋ฉฐ, ์ ๋์ค์ ๋คํธ์ํฌ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋๊ณ ์น์ด ๋ฑ์ฅํ๋ฉด์ ์ฑ์ฅํจ ์ธํฐ๋ท์ ํจํท ๊ธฐ๋ฐ์ ํต์ ๋ฐฉ์์ธ ์ด๋๋ท์ ๊ธฐ๋ฐ์ผ๋ก ํ๊ณ , ์ฃผ๋ก ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ค โญ ๋คํธ์ํฌ ํต์ ์ ๋ขฐ์ฑ์ ์ ๊ณตํ๋ TCP ์์ผ๊ณผ ์ ๋ขฐ์ฑ์ด ์์ง๋ง ์๋๊ฐ ๋น ๋ฅธ UDP ์์ผ์ผ๋ก ๋๋๋ค ๋ฆฌ๋ ์ค ๋คํธ์ํฌ ํ๋ก๊ทธ๋๋ฐ์์๋ ๋ ์ข ๋ฅ์ ์์ผ์ ๋ชจ๋ ์ง์ํ๋ค โญ ์์ผ ์ธํฐํ์ด์ค ์์ฉ ํ๋ก๊ทธ๋จ์์ TCP/IP ์ด์ฉํ๋ ์ฐฝ๊ตฌ ์ญํ ์ ํ๋ฉฐ, ๋คํธ์ํฌ ์์ฉ ํ๋ก๊ทธ๋จ์ ์์ผ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ก์์ ํ ์ ์๋ค ๋ฆฌ๋ ์ค๋ ํ์ผ์ด๋ ๋๋ฐ์ด์ค ๋ฑ ๋ชจ๋ ์ธํฐํ์ด์ค๊ฐ ํ์ผ๋ก ์ทจ๊ธ๋๋๋ฐ ์์ผ ๋๋ ํ์ผ๋ก ์ทจ๊ธ๋๋ค ์์ผ๋ read(), write(), c..
โญ ์น ์๋ฒ์ ๋ผ์ฆ๋ฒ ๋ฆฌ ํ์ด์ ์ ์ด HTML ๋ฌธ์ ์์ ์จ๋์ ์ต๋ ๋ฑ์ ์ง์ ํ์ํ ์ ์๋๋ก ์ฝ์ ํจ + lED ์ผ๊ณ ๋ ์ ์๋ ๋ผ๋์ค ๋ฒํผ + ์์ ์ ์ฐ์ฃผํ๊ณ ๋ชจํฐ๋ฅผ ์ ์ด ์น ๋ธ๋ผ์ฐ์ ์์ ์น ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ๋ ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ค ํ๊ทธ๋ POST ๋ฉ์์ง๋ก ์์ฒญ์ ๋ณด๋ด์ง๋ง, ์ ์น ์๋ฒ๋ GET ๋ฉ์๋๋ง ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ํ๊ทธ์ method ์์ฑ์ ์ด์ฉํ์ฌ GET ๋ฉ์๋๋ก ๋ณด๋ด๋๋ก ์ค์ ํ๋ค ์น ๋ธ๋ผ์ฐ์ ์์ ์น ํ์ด์ง๋ฅผ ๋ถ๋ฌ๋ค์ฌ์ ์ต์ ์ ์ ํํ๊ณ Submit ๋ฒํผ์ ์ ํํ๋ฉด, ์น ์๋ฒ๋ก 'http://์๋ฒ์ฃผ์:ํฌํธ๋ฒํธ/index.html?led=Off' ์์ฒญ์ GET ๋ฉ์๋๋ก ์ ๋ฌ๋๋ค ์น ์๋ฒ์์๋ GET ๋ฉ์๋๋ก ์ ์ก๋ ๋ฉ์์ง๋ฅผ ๋ถ์ํ๊ณ ๋ผ์ฆ๋ฒ ๋ฆฌ ํ์ด์ GPIO ์ ํด๋น ๋ช ๋ น์ ๋ด๋ฆด ์ ์๋ค ์ฝ๋๋ฅผ ..
โญ ๋ฐ๋ชฌ ํ๋ก์ธ์ค ์์คํ ์๋น์ค๋ ๋ฐ๋ชฌ (Daemon) ์ด๋ผ๋ ํํ์ ํ๋ก์ธ์ค๋ก ์คํ๋๋ค ๋ฐ๋ชฌ์ ์ผ๋ฐ์ ์ผ๋ก ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์คํ๋๋ ํ๋ก๊ทธ๋จ ํฐ๋ฏธ๋์ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ํฐ๋ฏธ๋๋ก ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๋ printf() ๋ฑ์ ํจ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค ๋ฐ๋ชฌ ํ๋ก์ธ์ค๋ฅผ ๋ง๋ค๋ ค๋ฉด, umaks() ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ๋ชฌ์ด ์์ฑํ๋ ํ์ผ์ ์ ๊ทผ๊ถํ์ ๋ฏธ๋ฆฌ ์ค์ ํ๋ค ์๋ก์ด ํ๋ก์ธ์ค๋ฅผ ๋ง๋ค์ด ์ธ์ ๊ณผ ๊ทธ๋ฃน์ ๋ฆฌ๋๋ก ๋ง๋ค๊ณ , ํฐ๋ฏธ๋ ์ ์ด์ ๊ด๋ จ๋ ์๊ทธ๋์ ๋ชจ๋ ๋ฌด์ํ๋ค ํ๋ก์ธ์ค์์์ ๋๋ ํฐ๋ฆฌ๋ฅผ '/' ๋ก ์ค์ , ์ด๋ฆฐ ํ์ผ ๋์คํฌ๋ฆฝํฐ๋ฅผ ๋ชจ๋ ๋ซ๋๋ค ํฐ๋ฏธ๋๊ณผ ๊ด๋ จ๋ ํ์ค ์ ๋ ฅ๊ณผ ํ์ค ์ถ๋ ฅ, ํ์ค ์๋ฌ์ ๋ํด ์ฌ์ฉํ ์ ์๋๋ก ์ฒ๋ฆฌํ๊ณ , ๋ฐ๋ชฌ๊ณผ ๊ด๋ จ๋ ์ฒ๋ฆฌ๋ฅผ ์ํํ๋ฉด ๋๋ค โ๏ธ ๋ฐ๋ชฌ ํ๋ก์ธ์ค ํน์ง ๋ถ๋ชจ ํ๋ก์ธ์ค๊ฐ init ํ๋ก์ธ์ค๋ผ๋ ..
โญ ์น๊ณผ HTTP ์น(Web) ์ ์ธํฐ๋ท์ ์ํ ๋คํธ์ํฌ ์์คํ ์ผ๋ก ์๋ฒ์ ํด๋ผ์ด์ธํธ๋ค์ด ์ฐ๊ฒฐ๋์ด ์๋ ์งํฉ ์ ์ธ๊ณ์ ๋คํธ์ํฌ๊ฐ ํ์ดํผํ ์คํธ ๋งํฌ๋ก ์ฐ๊ฒฐ๋ ๋ชจ์ต์ด ๋ง์น ๊ฑฐ๋ํ ๊ฑฐ๋ฏธ์ง (CobWeb) ๋๋ ๊ฑฐ๋ฏธ์ง ๋ชจ์์ ๋ง๊ณผ ๊ฐ๋ค๊ณ ํด์ ๋ถ์ฌ์ง ์ด๋ฆ ์น ๊ธฐ์ ์ HTTP (HyperText Transfer Protocol) ๋ผ๋ ํ๋กํ ์ฝ ์์์ ๊ตฌ๋๋๋ฉฐ, ์น๊ณผ ๊ด๋ จ๋ ํ์คํ๋ ์๋ ์์ด๋ ์น ์ปจ์์์ (W3C, World Wide Web Consortium) ์์ ์งํํ๋ค ์น์ ์ธํฐ๋ท์ ๊ธฐ๋ฐ์ผ๋ก ์น ์๋ฒ์ ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ตฌ์กฐ๋ก ๋์ํ๋ค TCP๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋ฉฐ 80 ๋ฒ ํฌํธ๋ฒํธ๋ก ์ฌ์ฉํ๋ค HTTP ์ ์ฒซ ๋ ๊ธ์๋ ํ์ดํผํ ์คํธ๋ฅผ ๊ฐ๋ฆฌํค๋ฉฐ, ํ์ฌ ๋ฌธ์์ ์ฐ๊ฒฐ๋ ๋ค๋ฅธ ํ์ด์ง๋ก์ ์ฐ๊ฒฐ์ ์๋ฏธ..
โญ ๋ณํ ์ฒ๋ฆฌ ์๋ฒ ์์ ์๋ฒ ์ฝ๋๋ฅผ ๋น๋ํ ํ 2๋์ ํด๋ผ์ด์ธํธ๊ฐ ์ ์ํ ๊ฒฝ์ฐ๋ผ๋ฉด ์ฒซ ๋ฒ์งธ ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ๋ฌธ์ ์์ด ์ ์๋์ง๋ง, ๋ ๋ฒ์งธ ํด๋ผ์ด์ธํธ๊ฐ ์ ์ํ๋ฉด, ๋ ๋ฒ์งธ ํด๋ผ์ด์ธํธ๋ ์ฒซ ๋ฒ์งธ ํด๋ผ์ด์ธํธ์ ์ฐ๊ฒฐ์ด ๋์ด์ง ๋๊น์ง ๋๊ธฐ ์ํ๋ก ์๊ป ๋๋ค ์ฌ๋ฌ ํด๋ผ์ด์ธํธ๋ฅผ ๋์์ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํด์๋ ๋ฉํฐ ํ๋ก์ธ์ค๋ ๋ฉํฐ ์ค๋ ๋ ๊ธฐ๋ฐ์ ์๋ฒ๊ฐ ํ์ํ๋ค ๋ฉํฐ ํ๋ก์ธ์ค ์๋ฒ์ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ์ ์ ์์ด ๋ค์ด์ฌ ๋๋ง๋ค ์๋ก์ด ํ๋ก์ธ์ค๋ฅผ ๋ง๋ค์ด์ ์ฒ๋ฆฌํ ์ ์๋ค BUT ๐จ ํ๋ก์ธ์ค๋ฅผ ๋ง๋๋๋ฐ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฌ๊ณ , ํ๋ก์ธ์ค ๊ฐ ํต์ (IPC) ์ด ๋ฉํฐ ์ค๋ ๋์ ๋นํด ๋ณต์กํ๊ธฐ ๋๋ฌธ์ ์์ฆ์ ๋ฉํฐ ์ค๋ ๋๋ฅผ ๋ ๋ง์ด ์ด๋ค ๋ฉํฐ ์ค๋ ๋ ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ๋ค์ด์ฌ ๋๋ง๋ค ์๋ก์ด ์ค๋ ๋๋ฅผ ๋ง๋ค์ด์ ์ฒ๋ฆฌํ๋ค ๋ฉํฐ ํ๋ก..
โญ TCP TCP ๋ ์ฐ๊ฒฐ ๊ธฐ๋ฐ์ ์ ๋ขฐ์ฑ์ด ์๋ ํต์ ๋ฐฉ์์ผ๋ก FTP, ๋ฉ์ผ, ์น ์๋น์ค ๋ฑ ์ธํฐ๋ท์ ์ด์ฉํ ๋ค์ํ ์๋น์ค์์ ์ฌ์ฉ๋๊ณ ์๋ค TCP ๋ ์ฃผ๋ก ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ ํต์ ๋ฐฉ์์ด๋ค TCP ์๋ฒ๋ ์์ผ์ ์์ฑํ ํ ๋ฐ์ธ๋ (bind) ํ๋ ๊ณผ์ ์ UDP ๊ณผ์ ๊ณผ ๋์ผํ๋ค but๐จ UDP์ ๋ค๋ฅด๊ฒ TCP ๋ ํด๋ผ์ด์ธํธ๊ฐ 3 Way-Handshaking (connect() ํจ์) ๋ฅผ ํตํด์ ์๋ฒ์ ์ ์ํ๊ธฐ ๋๋ฌธ์ ํด๋ผ์ด์ธํธ์ ๋๊ธฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ํ (queue) ๊ฐ ํ์ํ๋ค ์ด๋ฅผ ์ํด listen() ํจ์๋ฅผ ํตํด ๋๊ธฐ ํ๋ฅผ ์ค์ ํ๊ณ , accept() ํจ์๋ฅผ ํตํด ํด๋ผ์ด์ธํธ์ ์ ์์ ๊ธฐ๋ค๋ฆด ์ ์๋ค TCP ํด๋ผ์ด์ธํธ๋ ๋จผ์ ์์ผ์ ์์ฑํ๊ณ ์๋ฒ์ ์ ์์ ํด์ผํ๋๋ฐ, connect() ํจ์๋ฅผ ์ด์ฉํ๋ค..
โญ ์์ผ์ ์ด์ฉ UDP ํ๋กํ ์ฝ์ ๋ฐ์ดํฐ์ ์ ์ก ์ ์ ๋ขฐ์ฑ์ ์์ง๋ง ์๋๊ฐ ๋น ๋ฅด๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ธ LAN ํ๊ฒฝ์์ ๋ง์ด ์ฌ์ฉ LAN ์์์๋ ํจํท์ ๋ถ์ค์ด ๊ฑฐ์ ์๋ค๊ณ ํจ ์๋ฒ์ ๊ฒฝ์ฐ bind() ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ด์์ฒด์ ์ ํด๋น ํฌํธ๋ก ๋ค์ด์ค๋ ์๋น์ค๋ฅผ UDP ์๋ฒ์์ ์ฌ์ฉํ ์ ์๋๋ก ์ฐ๊ฒฐํด์ค์ผ ํ๋ค UDP์๋ฒ์ ํด๋ผ์ด์ธํธ ๋ชจ๋ sendto() ํจ์๋ฅผ ํตํด์ ๋ฐ์ดํฐ๊ทธ๋จ์ ๋ณด๋ด๊ณ , recvfrom) ํจ์๋ฅผ ํตํด ๋ฐ์ดํฐ๊ทธ๋จ์ ์์ ํ๋ค ์์ผ ์ฌ์ฉ์ด ๋๋๋ฉด close() ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์์ผ์ ๋ซ๋๋ค ์ ๋์ค์์ ์ธํฐ๋ท ํต์ ์ ํ๊ธฐ ์ํด์๋ ๋จผ์ ์์ผ์ ์์ฑํด์ผ ํ๋๋ฐ, socket() ํจ์๋ฅผ ์ฌ์ฉํ๋ค ํธ์ถ์ ์ฑ๊ณตํ๋ฉด ์์ผ์ ๋ํ ํ์ผ ๋์คํฌ๋ฆฝํฐ๋ฅผ ๋ฐํํ๊ณ , ์คํจํ๋ฉด -1์ ๋ฐํํ๋ค int socket(int ..