Skip to content

chxxhn/Socket-Programming

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

16 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ–ง Socket-Programming

๐Ÿ“Œ ๊ฐœ์š”

์ด ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋Š” ์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ ์†Œ์ผ“ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์‹ค์Šต ํ”„๋กœ์ ํŠธ๋“ค์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
C ์–ธ์–ด๋ฅผ ํ™œ์šฉํ•˜์—ฌ AF_UNIX ๋ฐ AF_INET ์†Œ์ผ“, ๋ฉ€ํ‹ฐํด๋ผ์ด์–ธํŠธ ์„œ๋ฒ„, select ๊ธฐ๋ฐ˜ ๋‹ค์ค‘ ์ฑ„ํŒ… ์„œ๋ฒ„ ๋“ฑ์„ ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ, ์‹œ๊ทธ๋„ ํ•ธ๋“ค๋ง ๋ฐ ํŒŒ์ผ ์ „์†ก ๊ธฐ๋Šฅ๋„ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ, ๋‹ค์–‘ํ•œ ๋„คํŠธ์›Œํฌ ํ†ต์‹  ๊ธฐ๋ฒ•์„ ์‹ค์Šตํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ“œ ์ฃผ์š” ๊ธฐ๋Šฅ

1๏ธโƒฃ ๊ธฐ๋ณธ ์†Œ์ผ“ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

  • ๊ธฐ๋Šฅ: AF_UNIX ๋ฐ AF_INET ์†Œ์ผ“์„ ํ™œ์šฉํ•œ 1:1 ํ†ต์‹  ๋ฐ ๋ฉ€ํ‹ฐ์„œ๋น„์Šค ์„œ๋ฒ„ ๊ตฌํ˜„
  • ์‚ฌ์šฉ ๊ธฐ์ˆ : AF_UNIX, AF_INET, SOCK_STREAM, fork(), pthread
  • ์ฃผ์š” ํŒŒ์ผ:
    • af_unix_server.c, af_unix_client.c โ†’ UNIX ๋„๋ฉ”์ธ ์†Œ์ผ“ ๋ฉ”์‹œ์ง€ ์ „์†ก
    • af_inet_server.c, af_inet_client.c โ†’ TCP ๊ธฐ๋ฐ˜ 1:1 ์ฑ„ํŒ…
    • multi_service_server.c, multi_service_client.c โ†’ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋ฉ€ํ‹ฐ์„œ๋น„์Šค ์„œ๋ฒ„

2๏ธโƒฃ CTRL+C ์‹œ๊ทธ๋„ ํ•ธ๋“ค๋Ÿฌ ๋ฐ Echo ์„œ๋ฒ„

  • ๊ธฐ๋Šฅ: SIGINT(CTRL+C) ์‹œ๊ทธ๋„ ์ฒ˜๋ฆฌ ๋ฐ ๋ฉ€ํ‹ฐํด๋ผ์ด์–ธํŠธ Echo ์„œ๋ฒ„
  • ์‚ฌ์šฉ ๊ธฐ์ˆ : signal(), fork(), SOCK_STREAM
  • ์ฃผ์š” ํŒŒ์ผ:
    • signal_handler.c โ†’ CTRL+C ์ž…๋ ฅ ์‹œ ์ข…๋ฃŒ ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ ํ›„ ์ข…๋ฃŒ
    • echo_server.c, echo_client.c โ†’ ๋ฉ€ํ‹ฐํด๋ผ์ด์–ธํŠธ Echo ์„œ๋ฒ„

3๏ธโƒฃ select ๊ธฐ๋ฐ˜ ๋‹ค์ค‘ ์ฑ„ํŒ… ์„œ๋ฒ„

  • ๊ธฐ๋Šฅ: select()๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ์™€ ๋น„๋™๊ธฐ ์ฑ„ํŒ… ์ง€์›
  • ์‚ฌ์šฉ ๊ธฐ์ˆ : FD_SET(), FD_ISSET(), select()
  • ์ฃผ์š” ํŒŒ์ผ:
    • select_chat_server.c, select_chat_client.c โ†’ select ๊ธฐ๋ฐ˜ ๋‹ค์ค‘ ์ฑ„ํŒ… ์„œ๋ฒ„

๐Ÿ›  ์‚ฌ์šฉ ๊ธฐ์ˆ 

  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด: C
  • ์†Œ์ผ“ ํ”„๋กœ๊ทธ๋ž˜๋ฐ: AF_UNIX, AF_INET, SOCK_STREAM
  • ๋ฉ€ํ‹ฐํด๋ผ์ด์–ธํŠธ ์ง€์›: fork(), pthread
  • ๋น„๋™๊ธฐ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ: select()
  • ์‹œ๊ทธ๋„ ํ•ธ๋“ค๋ง: SIGINT, signal()
  • ํŒŒ์ผ ์ „์†ก: send(), recv()
  • ์ฑ„ํŒ… ์„œ๋ฒ„: ๋‹ค์ค‘ ์‚ฌ์šฉ์ž ์ง€์›, ํด๋ผ์ด์–ธํŠธ ๊ฐ„ ๋ฉ”์‹œ์ง€ ๊ณต์œ 

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages