An open API service indexing awesome lists of open source software.

https://github.com/sayoonnn/ft_irc

ft_irc
https://github.com/sayoonnn/ft_irc

cpp irc socket

Last synced: about 1 year ago
JSON representation

ft_irc

Awesome Lists containing this project

README

          

# IRC 서버 (ft_irc)

![npm](https://img.shields.io/badge/cmake-064F8C?style=for-the-badge&logo=cmake&logoColor=white)
![npm](https://img.shields.io/badge/cpp-A8B9CC?style=for-the-badge&logo=cplusplus&logoColor=white)

이 프로젝트는 `C++98` 표준을 기반으로 작성된 IRC 서버 구현 프로젝트입니다.
IRC(Internet Relay Chat)는 실시간 텍스트 기반 채팅 시스템으로,
이 프로젝트 에서는 클라이언트 연결, 채널 관리, 메시지 브로드캐스팅 등 IRC의 핵심 기능들을 지원합니다.


## 구현 기술

- **네트워크 프로그래밍**: TCP/IP 소켓을 이용한 클라이언트-서버 통신 구현
- **이벤트 처리**: `kqueue`를 사용하여 비동기 이벤트 기반 처리를 수행
- **파일 구성**
- `src/` 디렉터리: 서버 및 클라이언트 관련 소스 파일과 명령어 구현
- `include/` 디렉터리: 헤더 파일 (명령어 응답, 데이터 타입, 유틸리티 함수 등)
- `Makefile`: 빌드 자동화 스크립트


## 빌드 및 실행

1. 터미널에서 프로젝트 루트 디렉터리로 이동합니다.
2. 다음 명령어로 프로젝트를 빌드합니다:
```bash
make
```
3. 빌드가 완료되면, 아래와 같이 서버를 실행합니다:
```bash
./ircserv <포트번호> <비밀번호>
```
예:
```bash
./ircserv 6667 secret
```


## 주요 기능

- **클라이언트 연결 및 인증**
- 클라이언트는 서버에 접속 후 `NICK`, `USER`, `PASS` 등의 명령어를 통해 인증을 완료합니다.
- 인증 실패 시, 적절한 에러 메시지가 전송됩니다.

- **채널 생성 및 관리**
- `JOIN` 명령어를 통해 새로운 채널에 참여하거나, 채널이 없을 경우 자동으로 생성됩니다.
- 채널에 대한 최대 인원 제한 및 비밀번호(key)를 설정할 수 있습니다.
- `TOPIC` 명령어를 통해 채널의 주제를 설정하거나 확인할 수 있습니다.
- `INVITE` 및 `KICK` 명령어를 통해 사용자를 초대하거나 강제 퇴장시킬 수 있습니다.

- **메시지 전송**
- `PRIVMSG` 명령어를 사용하여 특정 사용자 또는 채널에 메시지를 보낼 수 있습니다.
- 서버는 명령어에 따른 응답 메시지와 에러 메시지를 정의된 포맷(RPL, ERR)을 통해 클라이언트에 전송합니다.

- **모드 및 권한 관리**
- `MODE` 명령어를 통해 채널 모드(예: +i, +t, +k, +l, +o)를 설정하고 변경할 수 있습니다.
- 채널 운영자(OP) 권한을 부여하거나 회수하는 기능이 포함되어 있습니다.