๋ชฉ๋ก๐Ÿ‘ฉ‍๐Ÿ’ป 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์™€ ์›น ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

โญ ์›น๊ณผ HTTP ์›น(Web) ์€ ์ธํ„ฐ๋„ท์„ ์œ„ํ•œ ๋„คํŠธ์›Œํฌ ์‹œ์Šคํ…œ์œผ๋กœ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๋“ค์ด ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ์ง‘ํ•ฉ ์ „ ์„ธ๊ณ„์˜ ๋„คํŠธ์›Œํฌ๊ฐ€ ํ•˜์ดํผํ…์ŠคํŠธ ๋งํฌ๋กœ ์—ฐ๊ฒฐ๋œ ๋ชจ์Šต์ด ๋งˆ์น˜ ๊ฑฐ๋Œ€ํ•œ ๊ฑฐ๋ฏธ์ง‘ (CobWeb) ๋˜๋Š” ๊ฑฐ๋ฏธ์ง‘ ๋ชจ์–‘์˜ ๋ง๊ณผ ๊ฐ™๋‹ค๊ณ  ํ•ด์„œ ๋ถ™์—ฌ์ง„ ์ด๋ฆ„ ์›น ๊ธฐ์ˆ ์€ HTTP (HyperText Transfer Protocol) ๋ผ๋Š” ํ”„๋กœํ† ์ฝœ ์œ„์—์„œ ๊ตฌ๋™๋˜๋ฉฐ, ์›น๊ณผ ๊ด€๋ จ๋œ ํ‘œ์ค€ํ™”๋Š” ์›”๋“œ ์™€์ด๋“œ ์›น ์ปจ์†Œ์‹œ์›€ (W3C, World Wide Web Consortium) ์—์„œ ์ง„ํ–‰ํ•œ๋‹ค ์›น์€ ์ธํ„ฐ๋„ท์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์›น ์„œ๋ฒ„์™€ ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ตฌ์กฐ๋กœ ๋™์ž‘ํ•œ๋‹ค TCP๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋ฉฐ 80 ๋ฒˆ ํฌํŠธ๋ฒˆํ˜ธ๋กœ ์‚ฌ์šฉํ•œ๋‹ค HTTP ์˜ ์ฒซ ๋‘ ๊ธ€์ž๋Š” ํ•˜์ดํผํ…์ŠคํŠธ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋ฉฐ, ํ˜„์žฌ ๋ฌธ์„œ์™€ ์—ฐ๊ฒฐ๋œ ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋กœ์˜ ์—ฐ๊ฒฐ์„ ์˜๋ฏธ..

[๋ฆฌ๋ˆ…์Šค ๋„คํŠธ์›Œํฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ] ๋ณ‘ํ–‰ ์ฒ˜๋ฆฌ ์„œ๋ฒ„

โญ ๋ณ‘ํ–‰ ์ฒ˜๋ฆฌ ์„œ๋ฒ„ ์•ž์„œ ์„œ๋ฒ„ ์ฝ”๋“œ๋ฅผ ๋นŒ๋“œํ•œ ํ›„ 2๋Œ€์˜ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ ‘์†ํ•œ ๊ฒฝ์šฐ๋ผ๋ฉด ์ฒซ ๋ฒˆ์งธ ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์— ๋ฌธ์ œ์—†์ด ์ ‘์†๋˜์ง€๋งŒ, ๋‘ ๋ฒˆ์งธ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ ‘์†ํ•˜๋ฉด, ๋‘ ๋ฒˆ์งธ ํด๋ผ์ด์–ธํŠธ๋Š” ์ฒซ ๋ฒˆ์งธ ํด๋ผ์ด์–ธํŠธ์˜ ์—ฐ๊ฒฐ์ด ๋Š์–ด์งˆ ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ์ž‡๊ป˜ ๋œ๋‹ค ์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋™์‹œ์— ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค๋‚˜ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜์˜ ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ•˜๋‹ค ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค ์„œ๋ฒ„์˜ ๊ฒฝ์šฐ ํด๋ผ์ด์–ธํŠธ์˜ ์ ‘์†์ด ๋“ค์–ด์˜ฌ ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค BUT ๐Ÿšจ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ฆฌ๊ณ , ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹  (IPC) ์ด ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ์— ๋น„ํ•ด ๋ณต์žกํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์š”์ฆ˜์€ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋ฅผ ๋” ๋งŽ์ด ์“ด๋‹ค ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ์„œ๋ฒ„๋„ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ์Šค๋ ˆ๋“œ๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ฒ˜๋ฆฌํ•œ๋‹ค ๋ฉ€ํ‹ฐ ํ”„๋กœ..

[๋ฆฌ๋ˆ…์Šค ๋„คํŠธ์›Œํฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ] TCP์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

โญ TCP TCP ๋Š” ์—ฐ๊ฒฐ ๊ธฐ๋ฐ˜์˜ ์‹ ๋ขฐ์„ฑ์ด ์žˆ๋Š” ํ†ต์‹  ๋ฐฉ์‹์œผ๋กœ FTP, ๋ฉ”์ผ, ์›น ์„œ๋น„์Šค ๋“ฑ ์ธํ„ฐ๋„ท์„ ์ด์šฉํ•œ ๋‹ค์–‘ํ•œ ์„œ๋น„์Šค์—์„œ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค TCP ๋Š” ์ฃผ๋กœ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„ ํ†ต์‹  ๋ฐฉ์‹์ด๋‹ค TCP ์„œ๋ฒ„๋Š” ์†Œ์ผ“์„ ์ƒ์„ฑํ•œ ํ›„ ๋ฐ”์ธ๋“œ (bind) ํ•˜๋Š” ๊ณผ์ •์€ UDP ๊ณผ์ •๊ณผ ๋™์ผํ•˜๋‹ค but๐Ÿšจ UDP์™€ ๋‹ค๋ฅด๊ฒŒ TCP ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ 3 Way-Handshaking (connect() ํ•จ์ˆ˜) ๋ฅผ ํ†ตํ•ด์„œ ์„œ๋ฒ„์— ์ ‘์†ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํด๋ผ์ด์–ธํŠธ์˜ ๋Œ€๊ธฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํ (queue) ๊ฐ€ ํ•„์š”ํ•˜๋‹ค ์ด๋ฅผ ์œ„ํ•ด listen() ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋Œ€๊ธฐ ํ๋ฅผ ์„ค์ •ํ•˜๊ณ , accept() ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ์˜ ์ ‘์†์„ ๊ธฐ๋‹ค๋ฆด ์ˆ˜ ์žˆ๋‹ค TCP ํด๋ผ์ด์–ธํŠธ๋Š” ๋จผ์ € ์†Œ์ผ“์„ ์ƒ์„ฑํ•˜๊ณ  ์„œ๋ฒ„์— ์ ‘์†์„ ํ•ด์•ผํ•˜๋Š”๋ฐ, connect() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•œ๋‹ค..

[๋ฆฌ๋ˆ…์Šค ๋„คํŠธ์›Œํ‚น ํ”„๋กœ๊ทธ๋ž˜๋ฐ] UDP ๋„คํŠธ์›Œํฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

โญ ์†Œ์ผ“์˜ ์ด์šฉ UDP ํ”„๋กœํ† ์ฝœ์€ ๋ฐ์ดํ„ฐ์˜ ์ „์†ก ์‹œ ์‹ ๋ขฐ์„ฑ์€ ์—†์ง€๋งŒ ์†๋„๊ฐ€ ๋น ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ฐ˜์ ์ธ LAN ํ™˜๊ฒฝ์—์„œ ๋งŽ์ด ์‚ฌ์šฉ LAN ์ƒ์—์„œ๋Š” ํŒจํ‚ท์˜ ๋ถ„์‹ค์ด ๊ฑฐ์˜ ์—†๋‹ค๊ณ  ํ•จ ์„œ๋ฒ„์˜ ๊ฒฝ์šฐ bind() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์šด์˜์ฒด์ œ์˜ ํ•ด๋‹น ํฌํŠธ๋กœ ๋“ค์–ด์˜ค๋Š” ์„œ๋น„์Šค๋ฅผ UDP ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์—ฐ๊ฒฐํ•ด์ค˜์•ผ ํ•œ๋‹ค UDP์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๋ชจ๋‘ sendto() ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด์„œ ๋ฐ์ดํ„ฐ๊ทธ๋žจ์„ ๋ณด๋‚ด๊ณ , recvfrom) ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๊ทธ๋žจ์„ ์ˆ˜์‹ ํ•œ๋‹ค ์†Œ์ผ“ ์‚ฌ์šฉ์ด ๋๋‚˜๋ฉด close() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์†Œ์ผ“์„ ๋‹ซ๋Š”๋‹ค ์œ ๋‹‰์Šค์—์„œ ์ธํ„ฐ๋„ท ํ†ต์‹ ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € ์†Œ์ผ“์„ ์ƒ์„ฑํ•ด์•ผ ํ•˜๋Š”๋ฐ, socket() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค ํ˜ธ์ถœ์— ์„ฑ๊ณตํ•˜๋ฉด ์†Œ์ผ“์— ๋Œ€ํ•œ ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ์‹คํŒจํ•˜๋ฉด -1์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค int socket(int ..