A command-line IRC client written in C that allows users to connect to IRC servers, join channels, and send messages. This program provides a simple and reliable interface for interacting with IRC networks.

TODO | Is Done? |
---|---|
Make a graphical version | Check out; Nexus |
- Robust hostname resolution supporting both domain names and IP addresses
- Concurrent input/output handling using POSIX threads
- Full IRC protocol compliance with proper handshake implementation
- PING/PONG keepalive handling for stable connections
- Signal handling for clean shutdown procedures
- Comprehensive error handling and logging system
- Memory-safe string operations and buffer management
- Modular code architecture for maintainability
Navigate to the project directory and compile using make:
make
The executable will be created as bin/ircy
.
For debug builds with additional logging:
make debug
Run the client with required parameters:
./bin/ircy -s <server> -n <nickname> -c <channel>
-s <server>
: IRC server hostname or IP address-n <nickname>
: Your desired nickname on the network-c <channel>
: Channel to join upon connection
./bin/ircy -s irc.libera.chat -n myuser -c general
Once connected, you can use standard IRC commands:
- Type messages normally to send to the current channel
/join #channelname
- Join a different channel/quit
- Exit the client cleanly
- Standard IRC port 6667 is used for all connections
- IPv4 support required (IPv6 planned for future releases)
- Outbound TCP connections must be permitted through firewalls
The client uses a multi-threaded architecture:
- Main thread handles initialization and coordination
- Input thread processes user commands and keyboard input
- Server thread manages incoming IRC messages and protocol responses
All network operations use standard POSIX socket APIs with proper error handling. The code follows C99 standards with POSIX extensions for threading and network functions.
To install system-wide:
make install
This copies the binary to /usr/local/bin/ircy
.
Tested on Linux systems with gcc compiler. Requires:
- POSIX-compliant system
- pthread library support
- Standard C library with networking functions
This project is licensed under the MIT License.