This project involves creating your own IRC (Internet Relay Chat) server. IRC is a text-based communication protocol on the Internet that supports real-time messaging, public or private, and allows users to join group channels.
Version: 8
- Chapter I - Introduction
- Chapter II - General Rules
- Chapter III - Mandatory Part
- Chapter IV - Bonus Part
- Chapter V - Submission and Peer-evaluation
Internet Relay Chat (IRC) is a text-based communication protocol that enables users to communicate in real-time via channels or direct messaging. This project involves creating a functional IRC server using C++.
- Your program must handle all scenarios without crashing, including handling out-of-memory situations.
- Provide a Makefile that compiles your source files without relinking.
- The Makefile must include at least the rules:
$(NAME),all,clean,fclean, andre. - Compile your code with C++ and the flags
-Wall -Wextra -Werror. - Your code must comply with the C++ 98 standard and should compile with the flag
-std=c++98. - Use C++ features over C functions where possible.
- External libraries, including Boost, are not allowed.
Program name: ircserv
Makefile*.{h, hpp}*.cpp*.tpp*.ipp- (optional) Configuration file
NAME,all,clean,fclean,re
port: The listening port for the IRC server.password: Connection password required by IRC clients.
socket,close,setsockopt,getsockname,getprotobyname,gethostbyname,getaddrinfo,freeaddrinfo,bind,connect,listen,accept,htons,htonl,ntohs,ntohl,inet_addr,inet_ntoa,send,recv,signal,sigaction,lseek,fstat,fcntl,poll(or equivalent).
An IRC server implemented in C++ 98.
- The server must handle multiple clients simultaneously without hanging.
- All I/O operations must be non-blocking; forking is not allowed.
- Use only one
poll()(or equivalent) for handling read, write, listen operations. - Implement basic IRC functionalities similar to official IRC servers:
- Authentication, nickname and username setting.
- Joining channels, sending and receiving private messages.
- Forward messages to all clients in a channel.
- Support for operators and regular users.
- Implement commands specific to channel operators (e.g., KICK, INVITE, TOPIC, MODE).
Your IRC server must function seamlessly with a chosen reference IRC client.
Enhance your IRC server with these bonus features:
- File transfer capabilities.
- Implementing a bot.
These features will only be evaluated if the mandatory requirements are fully implemented without any issues.
Submit your project according to the guidelines provided by your instructor for evaluation.