gleaming0 / 2021_UnixProject

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

๐Ÿ”’ NANG LOCKER

2021 Unix Project!

๐Ÿ—„ Project

  • ์œ ๋‹‰์Šค ์‹œ์Šคํ…œ ์ˆ˜์—…์‹œ๊ฐ„์— ๋ฐฐ์šด ๋‚ด์šฉ์„ ์‘์šฉํ•˜์—ฌ ์‚ฌ๋ฌผํ•จ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•˜๋Š” ํ”„๋กœ์ ํŠธ ์ด๋‹ค.
  • Server์—์„œ๋Š” ์‚ฌ๋ฌผํ•จ์„ ๊ด€๋ฆฌํ•˜๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๊ณ , Client์—์„œ๋Š” ์‚ฌ๋ฌผํ•จ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์˜ ๊ณ ๊ฐ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  • Server์™€ Client๊ฐ€ ํ†ต์‹ ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์†Œ์ผ“์„ ์‚ฌ์šฉํ•˜์˜€๊ณ  ์—ฌ๋Ÿฌ ๊ฐœ(๋ช…)์˜ Client๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์“ฐ๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค.


๐Ÿ—„ Flowchart


๐Ÿ—„ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ

  • Server

    • ์‚ฌ์šฉ์ž์—๊ฒŒ ์‚ฌ๋ฌผํ•จ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
    • ์‚ฌ์šฉ์ž์—๊ฒŒ ์‚ฌ๋ฌผํ•จ ํ• ๋‹น ์‹œ ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ง€์ •ํ•˜๋„๋ก ํ•œ๋‹ค.
    • ์‚ฌ์šฉ์ž๊ฐ€ ๋ณธ์ธ ์‚ฌ๋ฌผํ•จ์— ์ ‘๊ทผ ์‹œ ์ž…๋ ฅํ•˜๋Š” ํŒจ์Šค์›Œ๋“œ๊ฐ€ ๋งž๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ๋งž์œผ๋ฉด ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•œ๋‹ค.
  • Client

    • ์›ํ•˜๋Š” ์‚ฌ๋ฌผํ•จ์— ์ ‘๊ทผํ•œ๋‹ค.
    • ํ•ด๋‹น ์‚ฌ๋ฌผํ•จ์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ ์„ค์ • ๋ฐ ์ž…๋ ฅ ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค.

๐Ÿ—„ ์ฃผ์š” ๊ธฐ๋Šฅ

  • ๋‹ค์ค‘ ์ ‘์† ๋ฐ ์‚ฌ๋ฌผํ•จ ์ •๋ณด ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ˜์˜

    • thread์™€ socket ์‚ฌ์šฉ
    • ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋Š” ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค๋ณด๋‹ค ์ ์€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ์‚ฌ์šฉ, ์šด์˜์ฒด์ œ๊ฐ€ ์‹œ์Šคํ…œ ์ž์› ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌ
    • ์ƒˆ๋กœ์šด client๊ฐ€ ์ ‘์†ํ•˜๋ฉด, server์—์„œ๋Š” ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ฐฑ์‹ ๋˜๋Š” ์‚ฌ๋ฌผํ•จ์˜ ์ •๋ณด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
  • ์‚ฌ๋ฌผํ•จ ๊ฐœ์ˆ˜ ์„ค์ •

    • ์ฒ˜์Œ server๊ฐ€ ์‹œ์ž‘๋˜๋ฉด, ์›ํ•˜๋Š” ์‚ฌ๋ฌผํ•จ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋™์ ์œผ๋กœ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค. (์ตœ๋Œ€ 50๊ฐœ)
  • ์‚ฌ๋ฌผํ•จ ์ •๋ณด ์ €์žฅ

    • ๊ตฌ์กฐ์ฒด์— use, conn, lock, pw ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค.
    • use : ํ•ด๋‹น ์‚ฌ๋ฌผํ•จ์ด ์‚ฌ์šฉ ์ค‘์ธ์ง€ ํ™•์ธ
      • 0 : ์‚ฌ์šฉX
      • 1 : ์‚ฌ์šฉO
    • conn : ํ•ด๋‹น ์‚ฌ๋ฌผํ•จ์— ๋‹ค๋ฅธ client๊ฐ€ ์—ฐ๊ฒฐ์ค‘์ธ์ง€ ํ™•์ธ
      • 0 : ์—ฐ๊ฒฐX
      • 1 : ์—ฐ๊ฒฐO
    • lock : ํ•ด๋‹น ์‚ฌ๋ฌผํ•จ์ด ์ž ๊ฒจ์žˆ๋Š”์ง€ ํ™•์ธ
      • 0 : ์ž ๊ธˆX
      • 1 : ์ž ๊ธˆO
    • pw : ์‚ฌ๋ฌผํ•จ ๋น„๋ฐ€๋ฒˆํ˜ธ
  • ๋น„๋ฐ€๋ฒˆํ˜ธ ์„ค์ • ์‹œ ํ™•์ธ

    • ์ฒ˜์Œ ๋น„๋ฐ€๋ฒˆํ˜ธ ์„ค์ • ์‹œ 2๋ฒˆ ์ž…๋ ฅ๋ฐ›์•„ ์ œ๋Œ€๋กœ ์„ค์ •ํ–ˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  • ํ•œ ์‚ฌ๋ฌผํ•จ์— ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž ์ ‘๊ทผ ๋ถˆ๊ฐ€

    • ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ๋ฌผํ•จ์„ ์ด์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉด, ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ ํ•ด๋‹น ์‚ฌ๋ฌผํ•จ์„ ์ด์šฉํ•˜์ง€ ๋ชปํ•œ๋‹ค.
    • ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ํ•œ ์‚ฌ๋ฌผํ•จ์— ๋™์‹œ์— ์ ‘๊ทผํ•˜์—ฌ ์ •๋ณด๊ฐ€ ์ค‘๋ณต๋˜๋Š” ๊ฒƒ์„ ๋ง‰๋Š”๋‹ค.
  • ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ ์˜ค๋ฅ˜ ์ž ๊ธˆ

    • client๋Š” ๋ฌผ๊ฑด์„ ์ฐพ์„ ๋•Œ ์ตœ๋Œ€ 5๋ฒˆ๊นŒ์ง€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ž…๋ ฅํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ 5๋ฒˆ ๋ชจ๋‘ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด 1๋ถ„ ๋™์•ˆ ํ•ด๋‹น ์‚ฌ๋ฌผํ•จ์ด ์ž ๊ธฐ๊ณ  ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋œ๋‹ค.
    • ์ž ๊ธด ์‚ฌ๋ฌผํ•จ์— ์ ‘๊ทผํ•˜๋ฉด ๋‚จ์€ ์‹œ๊ฐ„์ด ์ถœ๋ ฅ๋œ๋‹ค.

๐Ÿ—„ How to compile

  1. final_server.c
gcc -o server final_server.c -lpthread D_REENTRANT
  1. final_client.c
  gcc -o client final_client.c -lpthread D_REENTRANT   

2021/12/17 complete

About


Languages

Language:C 100.0%