Skip to content

Dosoon/IOCP_Chatting

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

7 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ’ฌ IOCP Chatting Server

IOCP ๋ชจ๋ธ ๊ธฐ๋ฐ˜ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์ฑ„ํŒ… ์„œ๋ฒ„


๐Ÿ’ป ๊ตฌํ˜„ ๋‚ด์šฉ

  • IOCP ๋ชจ๋ธ ๊ธฐ๋ฐ˜ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์†Œ์ผ“ ์„œ๋ฒ„
  • Windows Socket API ์‚ฌ์šฉ
  • RingBuffer๋ฅผ ์‚ฌ์šฉํ•œ I/O ์ตœ์ ํ™”
  • Redis ์—ฐ๋™
    • hiredis, redis_client ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ

๐ŸŒฑ ๊ธฐ์ˆ  ์Šคํƒ

  • C++
  • Windows Socket API
  • Visual Studio 2022
  • Redis

๐Ÿ“ˆ ์„œ๋ฒ„ ๊ตฌ์กฐ


๐Ÿ“ˆ ํŒจํ‚ท ์‹œํ€€์Šค ๋‹ค์ด์–ด๊ทธ๋žจ

์‹œ์Šคํ…œ ํŒจํ‚ท

์œ ์ €์˜ ์š”์ฒญ์ด ์•„๋‹ˆ๋ผ Connect, Disconnect์‹œ์— ์„œ๋ฒ„๊ฐ€ ์ƒ์„ฑํ•˜๋Š” ํŒจํ‚ท.
System Packet Queue์— Enqueue๋˜์–ด ์ฒ˜๋ฆฌ๋œ๋‹ค.

์ ‘์†

sequenceDiagram

Note over Client,Server:Connect
Server-)Server:kSYS_USER_CONNECT
Note over Server:์œ ์ € ๋ฐ์ดํ„ฐ ์ดˆ๊ธฐํ™”
Loading

์ ‘์† ์ข…๋ฃŒ

sequenceDiagram

Note over Client,Server:Disconnect
Server-)Server:kSYS_USER_DISCONNECT
alt ์œ ์ €๊ฐ€ ๋ฃธ์— ์žˆ๋Š” ๊ฒฝ์šฐ
    Server--)Client:kROOM_LEAVE_USER_NOTIFY<br>(๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ํ‡ด์žฅ ์•Œ๋ฆผ)
    Note over Server:๋ฃธ์—์„œ ์œ ์ € ๋ฐ์ดํ„ฐ ์‚ญ์ œ
end
Loading

์ผ๋ฐ˜ ํŒจํ‚ท

์œ ์ €์˜ ์š”์ฒญ์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌ๋˜๋Š” ํŒจํ‚ท.
User Packet Queue์— Enqueue๋˜์–ด ์ฒ˜๋ฆฌ๋œ๋‹ค.

๋กœ๊ทธ์ธ

sequenceDiagram

Client-)Server:kLOGIN_REQUEST
Note over Server: ํ˜„์žฌ ์ ‘์† ์œ ์ €์ˆ˜ ์ฒดํฌ
alt ์ตœ๋Œ€ ์ธ์› ๋„๋‹ฌ
Server--)Client:kLOGIN_RESPONSE(์‹คํŒจ)
end
Note over Server: ์ด๋ฏธ ์ ‘์†ํ•œ ์œ ์ €์ธ์ง€ ๊ฒ€์ฆ
alt ์ด๋ฏธ ์ ‘์†ํ•œ ์œ ์ €
Server--)Client:kLOGIN_RESPONSE(์‹คํŒจ)
end
Server-)Redis: kREQUEST_LOGIN
Note over Redis:์œ ์ € ๋กœ๊ทธ์ธ ์ •๋ณด ๊ฒ€์ฆ
Redis--)Server: kRESPONSE_LOGIN
Server--)Client: kLOGIN_RESPONSE
Loading

๋ฐฉ ์ž…์žฅ

sequenceDiagram

Client-)Server:kROOM_ENTER_REQUEST
Note over Server: ๋กœ๊ทธ์ธ ํ›„<br>๋กœ๋น„์— ์žˆ๋Š” ์œ ์ €์ธ์ง€ ๊ฒ€์ฆ
alt ๋กœ๋น„์— ์žˆ์ง€ ์•Š์Œ
Server--)Client:kROOM_ENTER_RESPONSE(์‹คํŒจ)
else ๋กœ๋น„์— ์žˆ์Œ
Note over Server: ๋ฐฉ ์ž…์žฅ ์ฒ˜๋ฆฌ
Server--)Client:[๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ์— Broadcast]<br>kROOM_NEW_USER_NOTIFY
Server--)Client:kROOM_USER_LIST_NOTIFY
Server--)Client:kROOM_ENTER_RESPONSE
end
Loading

๋ฐฉ ํ‡ด์žฅ

sequenceDiagram


Client-)Server:kROOM_LEAVE_REQUEST
Note over Server: ๋ฐฉ ์ž…์žฅ ์ƒํƒœ์ธ์ง€ ๊ฒ€์ฆ
alt ๋ฐฉ ์ž…์žฅ ์ƒํƒœ๊ฐ€ ์•„๋‹˜
Server--)Client:kROOM_LEAVE_RESPONSE(์‹คํŒจ)
else ๋ฐฉ ์ž…์žฅ ์ƒํƒœ
Note over Server: ๋ฐฉ ํ‡ด์žฅ ์ฒ˜๋ฆฌ
Server--)Client:[๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ์— Broadcast]<br>kROOM_LEAVE_USER_NOTIFY
Server--)Client:kROOM_LEAVE_RESPONSE
end
Loading

์ฑ„ํŒ…

sequenceDiagram

Client-)Server:kROOM_CHAT_REQUEST
Note over Server: ๋ฐฉ ์ž…์žฅ ์ƒํƒœ์ธ์ง€ ๊ฒ€์ฆ
alt ๋ฐฉ ์ž…์žฅ ์ƒํƒœ๊ฐ€ ์•„๋‹ˆ๊ฑฐ๋‚˜<br>์œ ํšจํ•˜์ง€ ์•Š์€ ๋ฐฉ ๋ฒˆํ˜ธ
Server--)Client:kROOM_CHAT_RESPONSE(์‹คํŒจ)
else ๋ฐฉ ์ž…์žฅ ์ƒํƒœ
Server--)Client:[๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ์— Broadcast]<br>kROOM_CHAT_NOTIFY
Server--)Client:kROOM_CHAT_RESPONSE
end
Loading

About

๐Ÿ’ฌ IOCP ๋ชจ๋ธ ๊ธฐ๋ฐ˜ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์ฑ„ํŒ… ์„œ๋ฒ„

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors