๋ชฉ๋ก์ ์ฒด ๊ธ (1103)
KoreanFoodie's Study
ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ ๋ํด ์์๋ณด๋ฉฐ ์ด๋ฅผ C++ ๋ฅผ ์ด์ฉํ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ์ด๋ป๊ฒ ์ ์ฉํ๋ฉด ์ข์์ง ์์๋ณด๊ฒ ์ต๋๋ค. ํต์ฌ : 1. ๋ฉ๋ชจ์ด์ ์ด์ ์ ํ์ฉํ๋ฉด, ์ฌ๊ท์ ์ธ ์ฐ์ฐ์์ ์ด์ ์ฐ์ฐ์ ์บ์ฑ๊ฐ์ ์ด์ฉํด ๋ถํ์ํ ์ฐ์ฐ์ ์ค์ผ ์ ์๋ค. 2. ๊ผฌ๋ฆฌ ์ฌ๊ท ์ต์ ํ๋ ์ปดํ์ผ๋ฌ ์ต์ ํ ํ๋๊ทธ๋ฅผ ํ์ฑํํ๋ฉด ๋๋ค. ์ด๋ฅผ ํตํด ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ๋ฎ์ถ ์ ์๋ค. 3. ์์ ํจ์์ ๋ถ๋ณ์ฑ์ ์ด์ฉํด ๋ณ๋ ฌ ์ฐ์ฐ์ ์ฝ๊ฒ ์ ์ฉํ ์ ์๋ค. ํ์ง๋ง future ๋ฑ์ ์ฌ์ฉํ์ฌ ๋ณ๋ ฌ ์ฐ์ฐ์ ํ๋ ๊ฒ๋ณด๋ค, sequential ํ ๋ฐฉ์์ ์ฑ๋ฅ์ด ๋ ๋์ ๋๋ ์๋ค. ํผํฌ๋จผ์ค ์ต์ ํ ์ฌ์ค ๋ชจ๋ ๊ฒฝ์ฐ์ ์ํฉ์ ์๋ง์ ์ต์ ํ ๋ฐฉ๋ฒ์ด๋ ์๋ค. ์ด๋ค ๊ฒฝ์ฐ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํฌ์ํด์๋ผ๋ ์๋๋ฅผ ๋์ฌ์ผ ํ ์๋ ์๊ณ , ๋ค๋ฅธ ๊ฒฝ์ฐ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋ผ๊ธฐ ์ํด ๋น ..
ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ ๋ํด ์์๋ณด๋ฉฐ ์ด๋ฅผ C++ ๋ฅผ ์ด์ฉํ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ์ด๋ป๊ฒ ์ ์ฉํ๋ฉด ์ข์์ง ์์๋ณด๊ฒ ์ต๋๋ค. ํต์ฌ : 1. ํจ์ํ ์ฐ์ฐ์๋ฅผ ํ์ฉํด ์ค๋ณต์ ์ ๊ฑฐํ๊ณ DRY ์์น์ ์งํฌ ์ ์๋ค. 2. ํ๋ผ๋ฏธํฐ ์ ์ฌ์ฑ์ด๋ ํจ์ ์ค๋ณต ์ฌ์ฉ์ ์ ์ฌ์ฑ์ ํ์ ์ ํ๋ฆฌ์ผ์ด์ ํน์ํ๋ ํจ์ํ ํฉ์ฑ์ผ๋ก ํด๊ฒฐํ ์ ์๋ค. 3. ๊ณ ์ฐจ์ ํจ์๋ฅผ ํตํด ๊ตฌ์กฐ์ ์ ์ฌ์ฑ๊ณผ ์จ์ ๋ฃจํ๋ฅผ ์ ๊ฑฐํ ์ ์์ง๋ง, ๊ณผ๋ํ ์ถ์ํ๋ ๋ค๋ฅธ ํ๋ก๊ทธ๋๋จธ๋ค์๊ฒ ์ง์ ์ฅ๋ฒฝ์ ๋์ผ ์ ์์์ ์ ์ํ์. ํจ์ํ ์ฐ์ฐ์๋ฅผ ํ์ฉํ ์ค๋ณต ์ ๊ฑฐ ํจ์ํ ์ฐ์ฐ์๋ฅผ ์ ๊ทน ํ์ฉํจ์ผ๋ก์จ, ์ค๋ณต์ ์ ๊ฑฐํ๊ณ DRY ์์น์ ์งํฌ ์ ์๋ค. DRY ์์น์ Don't Repeat Yourself ์ ์ฝ์๋ก, ์ฝ๋๊ฐ ์ง์์ ๋ณด๊ดํ๋ ๋ฐฉ์์ด๋ผ๋ ์ดํด์ ๋ฐํ์ ๋๋ค. ์ด์์ ..
ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ ๋ํด ์์๋ณด๋ฉฐ ์ด๋ฅผ C++ ๋ฅผ ์ด์ฉํ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ์ด๋ป๊ฒ ์ ์ฉํ๋ฉด ์ข์์ง ์์๋ณด๊ฒ ์ต๋๋ค. ํต์ฌ : 1. ๋ชจ๋ ํ๋ก๊ทธ๋จ์ ์์ ํจ์์ ์งํฉ์ผ๋ก ํํ๋ ์ ์์ผ๋ฉฐ, ์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ด ์ํธ ์์ฉํ๋ ํจ์ ์งํฉ์ผ๋ก ์ ์ํ ์ ์๋ค. 2. ์ ๋ ฅ๊ณผ ์ถ๋ ฅ ์ค์ฌ์ผ๋ก ์ฌ๊ณ ํ๋ฉฐ, ์ค๊ฐ ๋จ๊ณ์ ๋ณํ ๊ณผ์ ์ ์ฐจ๋ก๋๋ก ๊ตฌํํด ๋ณด์. ํจ์ํ์ผ๋ก ์ฌ๊ณ ํ๊ธฐ ๋ชจ๋ ํ๋ก๊ทธ๋จ์ ์์ ํจ์์ ์งํฉ์ผ๋ก ํํ๋ ์ ์์ผ๋ฉฐ, ์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ด ์ํธ ์์ฉํ๋ ํจ์ ์งํฉ์ผ๋ก ์ ์ํ ์ ์๋ค. ํจ์๋ฅผ ์ค๊ณํ ๋, ๋ค์ ์คํ ์ ๋ฐ์ผ๋ฉด ํจ์๋ฅผ ๊ฐ๋จํ๊ฒ ์ค๊ณํ ์ ์๋ค. ์ ๋ ฅ ๋ฐ์ดํฐ๋ก๋ถํฐ ์ถ๋ฐํ๋ค. ์ถ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ์ ์ํ๋ค. ์ผ๋ จ์ ์ ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅ ๋ฐ์ดํฐ๋ก ๋ณํํ๋ ๊ฐ ๋จ๊ณ์ธ ๋ณํ ๊ณผ์ (์์ ํจ์)๋ฅผ ์ ์ํ๋ค. ์ฌ์ค ์ ๋ด์ฉ์..
ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ ๋ํด ์์๋ณด๋ฉฐ ์ด๋ฅผ C++ ๋ฅผ ์ด์ฉํ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ์ด๋ป๊ฒ ์ ์ฉํ๋ฉด ์ข์์ง ์์๋ณด๊ฒ ์ต๋๋ค. ํต์ฌ : 1. ํ์ ์ ํ๋ฆฌ์ผ์ด์ ์ N ๊ฐ์ ์ธ์๋ฅผ ๊ฐ์ง ๋๋ค์์ ํ๋์ ์ธ์๋ฅผ ๋ฐ์ธ๋ฉํด N-1 ๊ฐ์ ์ธ์๋ฅผ ๊ฐ์ง๋ ๋๋ค๋ก ๋ณํํ๋ ์ฐ์ฐ์ ์๋ฏธํ๋ค. 2. ์ปค๋ง์ N ๊ฐ์ ์ธ์๋ฅผ ๊ฐ์ง ํจ์๋ฅผ ํ๋์ ์ธ์๋ฅผ ๊ฐ์ง ํจ์ N ๊ฐ๋ก ๋ถํดํ๋ ๊ณผ์ ์ ์๋ฏธํ๋ค. 3. ํ์ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์ปค๋ง์ ์ด์ฉํ๋ฉด ์ค๋ณต์ ์ ๊ฑฐํ ์ ์๊ณ , ๋ ๋ฒ์ฉ์ ์ธ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ค. ์ฐ๋ฆฌ๋ ์ด๋ฒ ๊ธ์์ ํ์ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์ปค๋ง์ ๋ฐฐ์ฐ๋ฉฐ, ์ด ๋ ๊ฐ์ง๊ฐ ์ด๋ป๊ฒ ์ฐ๊ด๋์๋์ง ์์๋ณผ ๊ฒ์ด๋ค. ํ์ ์ ํ๋ฆฌ์ผ์ด์ ํ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋, N ๊ฐ์ ์ธ์๋ฅผ ๊ฐ์ง๋ ๋๋ค์์ ํ๋์ ์ธ์๋ฅผ ๋ฐ์ธ๋ฉํด N-1 ๊ฐ์ ์ธ์๋ฅผ ๊ฐ์ง๋ ๋๋ค๋ฅผ..
ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ ๋ํด ์์๋ณด๋ฉฐ ์ด๋ฅผ C++ ๋ฅผ ์ด์ฉํ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ์ด๋ป๊ฒ ์ ์ฉํ๋ฉด ์ข์์ง ์์๋ณด๊ฒ ์ต๋๋ค. ํต์ฌ : 1. ํจ์(๋๋ค)๋ ๊ฐ์ด๋ค. ๊ณ ๋ก ํจ์๋ ์ธ์๋ก ์ ๋ฌํ ์ ์๊ณ , ๋๋ค๋ฅผ ๋ฐํํ ์ ์์ผ๋ฉฐ ๋๋ค๋ ๋๋ค๋ฅผ ๋ฐํํ ์ ์๋ค. 2. ์์ ํจ์์ ์กฐํฉ์ ํตํ ์ค๊ณ๋ ๋ถ๋ณ์ฑ์ ๋ณด์ฅํ๋ค. ์ฐ๋ฆฌ๋ ๊ฐ๋จํ ๋๋ค๋ฅผ ์กฐํฉํ์ฌ ๊ณ ์ฐจ์์ ํฉ์ฑ ํจ์๋ฅผ ๋ง๋ค์ด๋ผ ์ ์๋ค. 3. ํจ์ํ ํฉ์ฑ์ ํตํด ์ค๋ณต์ ํจ๊ณผ์ ์ผ๋ก ์ ๊ฑฐํ ์ ์๋ค. ๋ํ ์ฌ๋ฌ ์ธ์๋ฅผ ๊ฐ์ง ๋๋ค๋ ํ๋์ ์ธ์์ ์บก์ณ๋ ๊ฐ๋ค์ ๊ฐ์ง ๋ค์์ ๋๋ค๋ก ๋ถํดํ ์ ์๋ค. ํจ์ํ ํฉ์ฑ ์ฐ๋ฆฌ๋ ๊ณ ๋ฑํ๊ต ์๊ฐ์ ํจ์ ํฉ์ฑ์ ๋ํด ๋ฐฐ์ ๋ค(ํน์ ์คํ๊ต์ผ์๋ ์๋ค). ๋๋๊ฒ๋, ์ฐ๋ฆฌ๋ C++ ์์ ๋์ผํ ์์ ์ ํ ์ ์๋ค. ๐ ์ฐ๋ฆฌ๋ ์ด์ ๋๋ค๋ฅผ ..
ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ ๋ํด ์์๋ณด๋ฉฐ, ์ด๋ฅผ C++ ๋ฅผ ์ด์ฉํ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ์ด๋ป๊ฒ ์ ์ฉํ๋ฉด ์ข์์ง ์์๋ณด๊ฒ ์ต๋๋ค. ํต์ฌ : 1. ํจ์๋ ๊ฐ์ด๋ค. ํจ์๋ ์ธ์๋ก ์ ๋ฌํ ์ ์๋ค. ๊ฐ๋จํ ํจ์๋ฅผ ์กฐํฉํด ๋ ํฌ๊ณ ๋ณต์กํ ํจ์๋ฅผ ๋ง๋ค ์ ์๋ค. 2. ์์ ํจ์์ ์กฐํฉ์ ํตํ ์ค๊ณ๋ ๋ถ๋ณ์ฑ์ ๋ณด์ฅํ๋ค. 3. ๋๋ค๋ฅผ ์์ ํจ์์ฒ๋ผ ์ฌ์ฉํ์. ๋ํ ์บก์ณ์ ๋ํด ๋ช ํํ ์์๋์. ์ฌ์ค ํ์๋ ํ๋ถ ๊ณผ์ ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ๊ด๋ จ ์์ ์ ๋ค์ผ๋ฉฐ ํจ์ํ ์ธ์ด๋ฅผ ์ ํ์ง๋ง, ๊ทธ ๋น์์๋ ํ๋ก๊ทธ๋๋ฐ ์์ฒด์ ๋ํ ํฅ๋ฏธ๊ฐ ๊ทธ๋ค์ง ์์ด์ ๊ทธ๋ฐ์ง ํฐ ๊ด์ฌ์ ๊ฐ์ง ์์๋ค. ์ด์ฌํ ํ์ง๋ ์์๊ณ . ๐ ๊ทธ๋ฌ๋ค ๋ณด๋ ํจ์ํ ์ธ์ด์ ๋ํ ์ง์์ ๋จธ๋ฆฌ ์ ์ด๋ ๊ตฌ์์ ์์ ๋จผ์ง๋ง์ ์์งํ๊ณ ์์๋ค. ๊ทธ๋ฌ๋ค ๋ค์ ์ด ์ฑ ์ ์ฝ์ผ๋ฉด์ ํจ์ํ..
๋ณดํธ๋์ด ์๋ ๊ธ์ ๋๋ค.
[C++ ๊ฒ์ ์๋ฒ] 3-8. Select ๋ชจ๋ธ ํต์ฌ : 1. Select ๋ชจ๋ธ์ ์ฌ์ฉํ๋ฉด ์์ผ์ ์ ํจ์ฑ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ ์ ๋ฏธ๋ฆฌ ์ฒดํฌํ ์ ์๋ค. 2. ๊ด์ฐฐํ๊ณ ์ ํ๋ ์์ผ์ fd_set ์ ๋ฃ๊ณ , select ํ๋ฉด ๊ด์ฐฐ์ด ์์๋๋ฉฐ, ์ ์ด๋ ํ๋์ ์์ผ์ด ์ค๋น๋๋ฉด ๋ฆฌํด๋๋ค(๋์ค์๋ ์์์ ์ ๊ฑฐ๋จ) 3. ์ธ์ ์ ์ด์ฉํด์ ์์ผ์ ๊ด๋ฆฌํ ์ ์๋ค. ์ธ์ ์ ๋ ๊ธฐ๊ธฐ๊ฐ์ ํต์ ์ด ์ฐ๊ฒฐ๋์์ ๋ ๊ตฌ์ถ๋๊ณ , ๋๊ฒผ์ ๋ ํ๊ดด๋๋ ์๋ฐฉํฅ ๋งํฌ๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค. ์ด๋ฒ ์๊ฐ์๋ select ํจ์๊ฐ ํต์ฌ์ด ๋๋ Selet ๋ชจ๋ธ์ ๋ํด ์์๋ณด์. Select ๋ชจ๋ธ์ ์ฌ์ฉํ๋ฉด ์์ผ ํจ์ ํธ์ถ์ด ์ฑ๊ณตํ ์์ ์ ๋ฏธ๋ฆฌ ์ ์ ์๋ค. ์ด๊ฒ์ ์๋์ ๊ฐ์ ์ํฉ์์ ํฐ ์ด์ ์ผ๋ก ์์ฉํ๋ค : ๋ธ๋กํน ์์ผ : ์กฐ๊ฑด์ด ๋ง์กฑ๋์ง ์์์ ..
[C++ ๊ฒ์ ์๋ฒ] 3-7. ๋ ผ๋ธ๋กํน ์์ผ ํต์ฌ : 1. ๋ ผ๋ธ๋กํน ์์ผ์, ๋ธ๋กํน ์์ผ๊ณผ ๋ค๋ฅด๊ฒ ์ฐ๊ฒฐ ๋ฐ ์ก์์ ์ด ์ผ์์ ์ผ๋ก ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ, SpinLock ์ฒ๋ผ while ๋ฌธ์ ๋๋ฉฐ ๋ค์ ์๋๋ฅผ ํ๋ค. 2. ๋ ผ๋ธ๋กํน ์์ผ์ ๋ง๋๋ ๊ฒ์ ๊ฐ๋จํ๋ค. ioctlsocket ์ ์ฌ์ฉํ๋ฉด ๋๋ค. 3. ๋ ผ๋ธ๋กํน ์์ผ ์ฌ์ฉ์, WSAEWOULDBLOCK ์๋ฌ๊ฐ ๋์ฌ ๊ฒฝ์ฐ, ๋ค์ ์๋ํ๋ค. ์ด๋ ์ก์์ ๋ฒํผ์ ์ํ๊ฐ ๋น์ด ์๊ฑฐ๋ ๊ฐ๋ ์ฐจ ์์ด ์ก์์ ์ด ๋ถ๊ฐ๋ฅํ ์์์ ์ธ ์ํ์ด๊ธฐ ๋๋ฌธ์ด๋ค. ์ฐ๋ฆฌ๊ฐ ์ด์ ๊ธ์์ ํ์ฉํ๋ ๊ฒ์ ์์ผ์ ๋ธ๋กํน ์์ผ์ด๋ค. ๋ฐ๋ก ์ต์ ์ ์ค์ ํ ๊ฒ ๊ฐ์ง๋ ์์๋ฐ? ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ , ์ฐ๋ฆฌ๊ฐ ๋ง๋ ์์ผ์ด ๊ธฐ๋ณธ์ ์ผ๋ก ๋ธ๋กํน ์์ผ์ผ๋ก ์กํ ๊ฒ์ธ๋ฐ.. ๋ ผ๋ธ๋กํน ์์ผ์ ์ด์ผ๊ธฐํ๊ธฐ ์ ์ ๋จผ์ ๋ธ๋กํน ์์ผ..
[C++ ๊ฒ์ ์๋ฒ] 3-6. ์์ผ ์ต์ ํต์ฌ : 1. ์์ผ์๋ ์ต์ ์ ์ค์ ํ๊ณ , ์ค์ ๊ฐ์ ๋ถ๋ฌ์ฌ ์ ์๋ค. ::getsockopt ์ ::setsockopt ๊ฐ ๊ทธ๊ฒ์ด๋ค. 2. ์์ผ ์ต์ ์ ์ค์ ๋จ๊ณ๋ 3 ๊ฐ์ง๋ก, ์์ผ ์ฝ๋(SOL_SOCKET), IPv4(IPPROTO_IP), TCP ํ๋กํ ์ฝ(IPROTO_TCP) ์ด๋ค. 3. SO_KEEPALIVE, SO_LINGER, SD_SEND, SO_REUSEADDR ๋ฑ ์์ฃผ ์ฐ์ด๋ ์ต์ ์ ๋์ ์ตํ๋ฉด ์ข๋ค! ์ฐ๋ฆฌ๋ ์ง๊ธ๊น์ง ์์ผ์ ๋ง๋ค์ด์ ์๋ฒ-ํด๋ผ์ด์ธํธ ํต์ ์ ์งํํ๋๋ฐ, ์ฌ์ค ํธ๋ํฐ์๋ ์ฌ๋ฌ ๊ธฐ์ข ์ด ์๊ณ ๋ค์ํ ์ปค์คํฐ๋ง์ด์ง์ด ๊ฐ๋ฅํ๋ฏ์ด, ์์ผ๋ ์ฌ๋ฌ ์ต์ ์ ์ค ์ ์๋ค. ์ด๋ฅผ ์ค์ ํ๋ ํจ์๋ ::setsockopt ์ธ๋ฐ, ์ธ์๋ฅผ ๋ณด๋ฉด... ๋ก ๋์ด ์๋ค..