A command-line IRC client written in C that allows users to connect to an IRC server, join a channel, and send messages. This program provides a simple and intuitive interface for interacting with IRC servers.
- Improved Error Handling: Robust error handling ensures stability and reliability.
- Code Organization: Modular code structure for better readability and maintainability.
- Memory Management: Efficient use of system resources with no memory leaks.
- Logging: Comprehensive logging for debugging and tracking program execution.
- Threading: Concurrent input/output handling using threads for enhanced performance.
- Navigate to the directory containing the
Makefile
. - Run the command
make
to compile the program. - The executable file
ircy
will be created in thebin
directory.
- Navigate to the
bin
directory. - Run the command:
./ircy -s <irc-server> -n <nick> -c <channel>
- Replace
<irc-server>
with the hostname or IP address of the IRC server. - Replace
<nick>
with your desired nickname. - Replace
<channel>
with the channel you wish to join.
Example: ./ircy -s irc.example.com -n Disease -c channel-1
Type messages to send them to the channel.
Use IRC commands like /join
to switch channels or /quit
to exit the program.
-s <irc-server>
: Specify the IRC server to connect to.-n <nick>
: Specify the nickname to use.-c <channel>
: Specify the channel to join.
- Error Handling: Enhanced error handling for socket and connection operations.
- Code Organization: Refactored the main function into separate, modular functions.
- Code Style: Improved readability with consistent formatting and descriptive variable names.
- Security: Input validation and safer string manipulation techniques.
- Performance: Non-blocking and asynchronous I/O for improved responsiveness.
- Portability: Utilized portable functions for network operations.
- Command-line Argument Parsing: Implemented using the getopt library.
- IRC Protocol Implementation: Added support for handling PING/PONG messages.
- User Interface: Enhanced command-line interface with additional features.
Contributions are welcome! Please fork the repository and submit a pull request with your improvements.
This project is licensed under the MIT License. 2024