Skip to content

[ 팀 프로젝트 ] 3가지 서버모델을 이용한 채팅서버, 멀티 쓰레드 클라이언트

Notifications You must be signed in to change notification settings

kkdy21/Chatting-program-using-socket

Repository files navigation

Chatting-program-using-socket

multi-thread, multi-process, multi-plexing chatting program 멀티 프로세스, 멀티 플렉싱, 멀티 쓰레드를 이용한 다중접속 채팅 프로그램

프로그램 소개

  • 서버를 3가지 (멀티플랙싱, 멀티쓰레드, 멀티프로세스)로 각각 구현 했고 클라이언트는 멀티쓰레드로 구현한 채팅 프로그램

주요스텍

  • Linux
  • C++
  • vi editor

주요기능

  • 채팅, 귓속말기능, 귓속말시 색상변경
  • 채팅방에서 했던 채팅들을 +/-키를 이용해 로그 보는 기능

담당파트

  • 멀티 플랙싱서버 ( select이용 )
  • 멀티 프로세스 서버 ( IPC중 PIPE 이용)

느낀점

  • 그동안 멀티 쓰레드를 이용한 프로그램을 만들었기 때문에 쓰레드를 활용하는건 어렵지 않았 지만 멀티프로세스를 활용한 서버구현에는 어려움이 많았다. 쓰레드처럼 힙영역이 공유 되지 않아 고민을 많이했고 덕분에 IPC를 알게 되었다. IPC중 PIPE를 사용했고 쓰레드보다 복잡해서 처음 이해하는데 시간이 조금 걸렸지만 완성할수 있었다. 아쉬운점은 파이프 특성상 단일통신으로 구현했는데 단일 통신으로 하다보니 클라이언트가 쓰레드에 연결될때 프로세스가 2개씩 생성 된다는 단점이 있었다. 만약 공유메모리를 사용했다면 속도적인 측면과 프로세스의 생성이 적 다는 점에서 더 효율적이었을것 같다. 플렉싱은 select를 활용했는데 리눅스에선 epoll, 윈도우에선 IOCP가 효율적이라고 한다. 다음 에 기회가 된다면 써봐야겠다.

2022-10-20_Untitled.mp4

About

[ 팀 프로젝트 ] 3가지 서버모델을 이용한 채팅서버, 멀티 쓰레드 클라이언트

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published