2021-03-17(Wed)

ํ•ญ๋ชฉ

๋‚ด์šฉ

ํ•™์Šต ๋‚ ์งœ

2021-03-17(์ˆ˜)

ํ•™์Šต ์‹œ๊ฐ„

11:00~24:00

ํ•™์Šต ๋ฒ”์œ„ ๋ฐ ์ฃผ์ œ

socket, bind, listen, select, accept

ํ•™์Šต ๋ชฉํ‘œ

exam06์„ ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•™์Šตํ•œ๋‹ค.

๋™๋ฃŒ ํ•™์Šต ๋ฐฉ๋ฒ•

-

์ƒ์„ธ ํ•™์Šต ๋‚ด์šฉ

์„œ๋ธŒ์ ํŠธ๋Š” ๋๋ƒˆ์ง€๋งŒ, ๋ฐ”๋กœ ์ด์–ด์„œ ํ•™์Šต ์‹œ์ž‘ํ–ˆ๋‹ค. exam06์—์„œ ์š”๊ตฌํ•˜๋Š” IRC ๊ฐ„์ด ์„œ๋ฒ„๋ฅผ ๋ฐ”๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก ์—ฐ์Šตํ–ˆ๋‹ค.

image

์ผ๋ฐ˜์ ์œผ๋กœ ์›น์„œ๋ฒ„๋Š” ์•„๋ž˜ ํ”Œ๋กœ์šฐ๋ฅผ ๋”ฐ๋ผ๊ฐ„๋‹ค.

  1. socket์„ ๋งŒ๋“ ๋‹ค. TCP/IP์—์„œ๋Š” SOCK_STREAM์„ ์‚ฌ์šฉํ•œ๋‹ค.

  2. bind ํ•จ์ˆ˜๋กœ socket์— server socket์— ํ•„์š”ํ•œ ์ •๋ณด(์ฃผ์†Œ, port ๋ฒˆํ˜ธ ๋“ฑ)๋ฅผ ํ• ๋‹นํ•˜๊ณ  ์ปค๋„์— ๋“ฑ๋กํ•œ๋‹ค. ์ด์ œ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ๊ณผ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.

  3. ์ด์ œ listen ํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ•˜์—ฌ socket_fd์œผ๋กœ ํด๋ผ์ด์–ธํŠธ ์ ‘์† ์š”์ฒญ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ์…‹ํŒ…ํ•œ๋‹ค. ํ•œํŽธ ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ connect๋กœ ์ ‘์†์š”์ฒญ์„ ํ•œ๋‹ค.

  4. ์šฐ๋ฆฐ select๋กœ ์š”์ฒญ์„ ๊ฐ์ง€ํ•˜์—ฌ socket_fd์— ๋ณ€ํ™”๊ฐ€ ์žˆ์œผ๋ฉด ์•„๋ž˜ 5๋ฒˆ์„ ์‹คํ–‰ํ•˜๊ณ , ์•„๋‹ˆ๋ผ๋ฉด 6๋ฒˆ์„ ์‹คํ–‰ํ•œ๋‹ค.

  5. ํด๋ผ์ด์–ธํŠธ ์ ‘์† ์š”์ฒญ์— ๋”ฐ๋ผ accpet๋กœ ์ ‘์†์„ ํ—ˆ๋ฝํ•œ๋‹ค. ์ด์ œ client socket์ด ๋งŒ๋“ค์–ด์กŒ๋‹ค.

  6. recv/read๋ฅผ ํ†ตํ•ด ์ „์†ก๋˜์–ด ์˜ค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด๋“ค์ธ๋‹ค. ์ดํ›„ write/send๋กœ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•œ๋‹ค.

์ด ๋•Œ exam ์š”๊ตฌ์‚ฌํ•ญ์— ๋”ฐ๋ผ ์–ด๋А ํ•œ ํด๋ผ์ด์–ธํŠธ์˜ ๋ฉ”์‹œ์ง€๋ฅผ ๋ชจ๋“  ๋‚˜๋จธ์ง€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธํ•˜๋„๋ก ๊ตฌํ˜„ํ•˜๋ฉด ๋œ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ํด๋ผ์ด์–ธํŠธ ์ •๋ณด๋ฅผ ๋ฆฌ์ŠคํŠธ๋กœ ์ €์žฅํ•˜์—ฌ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธํ•˜๋Š”๋ฐ ํ™œ์šฉํ•˜์˜€๋‹ค.

ํ•™์Šต ๋‚ด์šฉ์— ๋Œ€ํ•œ ๊ฐœ์ธ์ ์ธ ์ดํ‰

42์—์„œ๋Š” ์›น์„œ๋ฒ„ ๊ตฌํ˜„๊ณผ IRC ๊ตฌํ˜„ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ด์„œ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ exam06์ด IRC ๊ตฌํ˜„๊ณผ ๋น„์Šทํ•˜๋‹ค๊ณ  ํ•˜์—ฌ ์ต์ˆ™์น˜์•Š์„๊ฑฐ๋ผ ๊ธด์žฅํ–ˆ๋Š”๋ฐ, ์–ผ๋งˆ ์ „๊นŒ์ง€ ์•ก์…˜์ผ€์ด๋ธ”๋กœ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธํ•˜์—ฌ ์ฑ—ํŒ…ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด์„œ์ธ์ง€ ๋ณ„ ์œ„ํ™”๊ฐ ์—†์ด ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๊ตฟ๊ตฟ

๋‹ค์Œ ํ•™์Šต ๊ณ„ํš

  • exam06 ์‘์‹œ

Last updated

Was this helpful?