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

https://github.com/cpscript/irc-client

A simple "internet relay chatting"(IRC) client built using C based from "https://github.com/IanMarcoMoffett/mini-irc-client" :3
https://github.com/cpscript/irc-client

c forum forums ipv4 irc irc-client irc-protocol irc-server makefile network

Last synced: 3 months ago
JSON representation

A simple "internet relay chatting"(IRC) client built using C based from "https://github.com/IanMarcoMoffett/mini-irc-client" :3

Awesome Lists containing this project

README

        

# IRC-Client v2
> 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.

## Features
- **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.

## How to Use

### Compiling the Program
1. Navigate to the directory containing the `Makefile`.
2. Run the command `make` to compile the program.
3. The executable file `ircy` will be created in the `bin` directory.

### Running the Program
1. Navigate to the `bin` directory.
2. Run the command:
```bash
./ircy -s -n -c
```
3. Replace `` with the hostname or IP address of the IRC server.
4. Replace `` with your desired nickname.
5. Replace `` with the channel you wish to join.

Example: `./ircy -s irc.example.com -n Disease -c channel-1`

## Using the Program

Type messages to send them to the channel.

Use IRC commands like `/join` to switch channels or `/quit` to exit the program.

### Available Options
- `-s `: Specify the IRC server to connect to.
- `-n `: Specify the nickname to use.
- `-c `: Specify the channel to join.

## Changes & Additions
- **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.

## Contributing

Contributions are welcome! Please fork the repository and submit a pull request with your improvements.

#### License
> This project is licensed under the MIT License. 2024