์ด ๋ฌธ์๋ Java Socket ๊ธฐ๋ฐ ์ค์๊ฐ ํต์ ์์คํ ์ ๋ฉด์ ์์ ์ค๋ช ํ๊ธฐ ์ํ ์ ๋ฆฌ์ ๋๋ค.
Java Socket๊ณผ ๋ฉํฐ์ค๋ ๋ฉ์ ํ์ฉํด ์ฌ๋ฌ ํด๋ผ์ด์ธํธ๊ฐ ๋์์ ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ ์ค์๊ฐ ์ฑํ ์์คํ ์ ๊ตฌํํ ํ์ต ํ๋ก์ ํธ์ ๋๋ค.
- ์ฒ์์๋ ์์ผ ์ฐ๊ฒฐ ํ ๋ฌธ์์ด์ ๋ณด๋ด๋ฉด ์ฑํ ์ด ์์ ์ ์ผ๋ก ๋์ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค.
- ํ์ง๋ง ์ฌ๋ฌ ํด๋ผ์ด์ธํธ๊ฐ ๋์์ ์ ์ํ๊ฑฐ๋ ๊ธด ๋ฉ์์ง๋ฅผ ๋ณด๋ผ ๋ ๋ฉ์์ง๊ฐ ์๋ฆฌ๊ฑฐ๋ ๊นจ์ง๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
- ์ด๋ค ํด๋ผ์ด์ธํธ, ์ด๋ค ์ค๋ ๋์์ ๋ฌธ์ ๊ฐ ์๊ฒผ๋์ง ๋ก๊ทธ๊ฐ ๋ถ์กฑํด ์์ธ์ ์ถ์ ํ๊ธฐ ์ด๋ ค์ ์ต๋๋ค.
- ํด๋ผ์ด์ธํธ๋ง๋ค ๋ ๋ฆฝ์ ์ผ๋ก ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ์๋ฒ ๊ตฌ์กฐ ๋ง๋ค๊ธฐ
- ์ฐ๊ฒฐ, ๋ฉ์์ง ์ ์ก, ์ข ๋ฃ ์ด๋ฒคํธ๋ฅผ ๊ตฌ๋ถํ๊ธฐ
- ์์ ๋ฒํผ์์ ์์ ํ ๋ฉ์์ง ๋จ์๋ง ์ฒ๋ฆฌํ๋๋ก ๊ฐ์ ํ๊ธฐ
- ํ์์ด ๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋ฌธ์ ๋ฅผ ํ์ธํ ์ ์๋๋ก ๋ก๊ทธ ์ฒด๊ณ ์ ๋ฆฌํ๊ธฐ
- ์๋ฒ๋ ํด๋ผ์ด์ธํธ ์ฐ๊ฒฐ์ ๋ฐ์ผ๋ฉด ํด๋ผ์ด์ธํธ๋ณ ์ฒ๋ฆฌ ์ค๋ ๋๋ฅผ ํ ๋นํ๋ ๊ตฌ์กฐ๋ก ์ค๊ณํ์ต๋๋ค.
- ๋ฉ์์ง ์ ํ์ ๊ตฌ๋ถํด ์ฐ๊ฒฐ, ์ ์ก, ์ข ๋ฃ ํ๋ฆ์ ๋๋ด์ต๋๋ค.
- ๋ก๊ทธ์๋ ์ค๋ ๋ ID, ์๊ฐ, ์ด๋ฒคํธ ์ ํ์ ํฌํจํ๋๋ก ๊ธฐ์ค์ ๋ง์ท์ต๋๋ค.
- ๊ธด ๋ฉ์์ง๊ฐ ๋๋์ด ๋ค์ด์ฌ ์ ์๋ค๋ ์ ์ ๊ณ ๋ คํด ์์ ๋ฒํผ ๋์ ๊ณผ ๋ฉ์์ง ๋จ์ ์ฒ๋ฆฌ ๊ธฐ์ค์ ์ ๋ฆฌํ์ต๋๋ค.
- TCP๋ ๋ฉ์์ง ๊ฒฝ๊ณ๋ฅผ ๋ณด์ฅํ์ง ์๊ธฐ ๋๋ฌธ์ ํ ๋ฒ ๋ณด๋ธ ๋ฉ์์ง๊ฐ ํ ๋ฒ์ ๊ทธ๋๋ก ๋์ฐฉํ๋ค๊ณ ๊ฐ์ ํ๋ฉด ์ ๋ฉ๋๋ค.
- ์ฌ๋ฌ ํด๋ผ์ด์ธํธ๊ฐ ๋์์ ์ ์ํ๋ฉด ๋ก๊ทธ ์์๊ฐ ์์ฌ ๋ฌธ์ ๋ฐ์ ์ง์ ์ ์ฐพ๊ธฐ ์ด๋ ค์ ์ต๋๋ค.
- ํด๋ผ์ด์ธํธ๋ง๋ค ์ค๋ ๋๋ฅผ ์์ฑํ๋ ๋ฐฉ์์ ์ดํดํ๊ธฐ ์ฝ์ง๋ง, ์ ์์๊ฐ ๋์ด๋๋ฉด ๋ฆฌ์์ค ๋ถ๋ด์ด ์ปค์ง ์ ์์ต๋๋ค.
- ๋ฉ์์ง ์์ ์ ๋ฒํผ์ ๋ฐ์ดํฐ๋ฅผ ๋์ ํ๊ณ ์์ ํ ๋จ์๋ง ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ผ๋ก ๊ฐ์ ํ์ต๋๋ค.
- ๋ก๊ทธ ๊ธฐ์ค์ ํต์ผํด ์ค๋ ๋๋ณ ๋์์ ์ถ์ ํ ์ ์๊ฒ ํ์ต๋๋ค.
- ํฅํ ๊ฐ์ ๋ฐฉํฅ์ผ๋ก Thread Pool๊ณผ Java NIO๋ฅผ ์ ๋ฆฌํ์ต๋๋ค.
TCP๋ ์คํธ๋ฆผ ๊ธฐ๋ฐ์ด๋ผ์ send ํ ๋ฒ์ด receive ํ ๋ฒ๊ณผ 1:1๋ก ๋์๋๋ค๊ณ ๋ณผ ์ ์์ต๋๋ค. ๊ทธ๋์ ์์ ๋ฒํผ๋ฅผ ๋์ ํ๊ณ , ๋ฉ์์ง ๊ธธ์ด๋ ๊ตฌ๋ถ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ ํ ๋ฉ์์ง๋ง ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.
ํด๋ผ์ด์ธํธ๋ณ ์ค๋ ๋ ๋ฐฉ์์ ๊ตฌํ๊ณผ ์ดํด๊ฐ ์ฝ์ง๋ง, ์ ์์๊ฐ ๋ง์์ง์๋ก ์ค๋ ๋ ์์ฑ ๋น์ฉ๊ณผ ์ปจํ ์คํธ ์ค์์นญ ๋น์ฉ์ด ์ปค์ง ์ ์์ต๋๋ค. ๊ทธ๋์ ๊ท๋ชจ๊ฐ ์ปค์ง๋ฉด Thread Pool์ด๋ Java NIO๋ฅผ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
๋์์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ๋ก๊ทธ ์์๊ฐ ์์ด๊ธฐ ์ฝ์ต๋๋ค. ๊ทธ๋์ ์ค๋ ๋ ID, ์๊ฐ, ์ด๋ฒคํธ ์ ํ์ ํต์ผํด์ ๊ธฐ๋กํด์ผ ์ด๋ ์ฐ๊ฒฐ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋์ง ์ถ์ ํ ์ ์์ต๋๋ค.
- Thread Pool ์ ์ฉ
- Java NIO ๊ธฐ๋ฐ ๋น๋๊ธฐ ์ฒ๋ฆฌ
- ๋ฉ์์ง ํ๋กํ ์ฝ ๋จ์ ํ ์คํธ ์ถ๊ฐ
- ํด๋ผ์ด์ธํธ ์ฌ์ ์ ์ฒ๋ฆฌ
- ์๋ฒ ์ข ๋ฃ ์ ์ฐ๊ฒฐ ์ ๋ฆฌ ํ๋ฆ ๋ณด๊ฐ
Java Socket์ผ๋ก ์ฌ๋ฌ ํด๋ผ์ด์ธํธ๊ฐ ๋์์ ์ ์ํ๋ ์ฑํ ์์คํ ์ ๊ตฌํํ์ต๋๋ค. ์ฒ์์๋ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ฉด ๊ทธ๋๋ก ๋ฐ์ ์ ์๋ค๊ณ ์๊ฐํ์ง๋ง, TCP๋ ์คํธ๋ฆผ ๊ธฐ๋ฐ์ด๋ผ ๊ธด ๋ฉ์์ง๊ฐ ๋๋์ด ์์ ๋๋ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์์ ๋ฒํผ์ ๋ฐ์ดํฐ๋ฅผ ๋์ ํ๊ณ ์์ ํ ๋ฉ์์ง ๋จ์๋ง ์ฒ๋ฆฌํ๋ ๋ฐฉํฅ์ผ๋ก ๊ฐ์ ํ์ต๋๋ค. ๋ ์ค๋ ๋ ID์ ์ด๋ฒคํธ ์ ํ์ ๋ก๊ทธ์ ๋จ๊ฒจ ๋์ ์ ์ ์ํฉ์์๋ ๋ฌธ์ ๋ฅผ ์ถ์ ํ ์ ์๊ฒ ํ์ต๋๋ค. ์ง๊ธ ๋ค์ ํ๋ค๋ฉด Thread Pool์ด๋ Java NIO๋ฅผ ์ ์ฉํด ๋ฆฌ์์ค ์ฌ์ฉ์ ๊ฐ์ ํ๊ณ ์ถ์ต๋๋ค.