๋ฉํฐ์ค๋ ๋ ์์ผ ์๋ฒ(multi_server.cc)์ ํฐ๋ฏธ๋ ํด๋ผ์ด์ธํธ(chat_client.cc)๋ก ๊ตฌ์ฑ๋ ์ฑํ
ํ๋ก๊ทธ๋จ์
๋๋ค.
์ ๊ณต๋ multi_server.cc๋ฅผ ๊ธฐ๋ฐ์ผ๋ก, ํด๋ผ์ด์ธํธ ๊ธฐ๋ฅ์ ๋ง์ถฐ ์๋ฒ๋ฅผ ํ์ฅํ์ต๋๋ค.
g++ -o multi_server multi_server.cc -lpthread
g++ -o chat_client chat_client.cc -lpthread./multi_server 9000 # ์๋ฒ (ํฌํธ ์ง์ )
./chat_client 127.0.0.1 9000 # ํด๋ผ์ด์ธํธ (์ฌ๋ฌ ๊ฐ ์ ์ ๊ฐ๋ฅ)์ ์ ํ /help ๋ก ์ ์ฒด ๋ช
๋ น์ด๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ: ์๋ฒ ์ฐ๊ฒฐ / ์ก์์ / ์ข ๋ฃ
ํ์ฅ
- ๋๋ค์(์ค๋ณต ๋ฐฉ์ง), ์ ์ฅยทํด์ฅ ์๋ฆผ, ์ ์ ์๊ฐ
- ์ฑ๋/๋ฐฉ:
/join/rooms, ๋ฐฉ๋ณ ๊ฒฉ๋ฆฌ, ํ๋กฌํํธ์ ํ์ฌ ๋ฐฉ ํ์ - ๋ฐฉ ๊ถํ: ์์ฑ์=๋ฐฉ์ฅ,
/delete/grant/revoke/owner - ๋ฉ์์ง ํ์คํ ๋ฆฌ(์คํฌ๋กค๋ฐฑ): ๋ฐฉ ์ ์ฅ ์ ์ต๊ทผ ๋ํ ์ฌ์
- ๋ต๊ธ
/reply(๊ฐ ๋ฉ์์ง #๋ฒํธ), ๊ท์๋ง/w - ํ
์คํธ ์์
/color, ์ด๋ชจํฐ์ฝ(:์ฝ๋+Tab), ๋ฉ์์ง ์๊ฐ ํ๊ทธ - ๋ฐฉ ํ์ผ ์ ์ฅ์:
/file์ ๋ก๋ โ/files๋ชฉ๋ก โ/get๋ค์ด๋ก๋ (์ฒญํฌ + ์งํ๋ฅ ) - ๋ก์ปฌ ํ์ผ ํ์:
/ls/cd/pwd - Tab ์๋์์ฑ: ๋ช ๋ น์ด / ๋ฐฉ์ด๋ฆ / ๋๋ค์ / ๋ต๊ธยทํ์ผ ๋ฒํธ / ์์ / ํ์ผ๊ฒฝ๋ก / ์ด๋ชจํฐ์ฝ
- ํ๋กํ ์ฝ:
TYPE\x1fํ๋โฆ๋ผ์ธ ๊ธฐ๋ฐ ํ ์คํธ ํ๋กํ ์ฝ. TCP ์คํธ๋ฆผ ์ฌ์กฐ๋ฆฝ ๋ฒํผ๋ก ๋ถ๋ถ ์์ ์ฒ๋ฆฌ. - ๋ฉํฐ์ค๋ ๋ ์ ์ง: ์ ์ 1๊ฑด๋น pthread 1๊ฐ ๊ตฌ์กฐ๋ฅผ ์ ์งํ๊ณ , ๊ณต์ ์ํ๋
pthread_mutex๋ก ๋ณดํธ(์๋ณธ์ ๊ฒฝ์ ์ํ ๊ฐ์ ). - ํด๋ผ์ด์ธํธ: termios raw ๋ชจ๋๋ก ํค ๋จ์ ์ ๋ ฅ์ ๋ฐ์ Tab ์๋์์ฑยทํ๊ธ(UTF-8) ์์ ์ฒ๋ฆฌยท์ ๋ ฅ์ค ๋ณต์์ ๊ตฌํ.
์์ธํ ์ค๊ณ ์๋๋ ๊ฐ ์์ค ์๋จ๊ณผ ํจ์ ์ฃผ์์ ์ ๋ฆฌ๋์ด ์์ต๋๋ค.