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

https://github.com/rohanvdvivedi/connman

Multithreaded network connection handler library in C.
https://github.com/rohanvdvivedi/connman

connection-pool multithreaded-server tcp tcp-client tcp-server udp udp-client udp-server

Last synced: 3 months ago
JSON representation

Multithreaded network connection handler library in C.

Awesome Lists containing this project

README

        

# ConnMan
This is a C library, for developing multithreaded networking applications.
It is essentially an abstraction layer over the POSIX sockets library, providing a handler-callback based network agnostic API.
It allows you to change the underlying protocol layers (tcp to udp or ipv4 to ipv6) without any change in application logic.
Additionally, it provides a stream interface to work with tcp sockets, along with ssl and compression support.

## Setup instructions
**Install dependencies :**
* [Cutlery](https://github.com/RohanVDvivedi/Cutlery)
* [BoomPar](https://github.com/RohanVDvivedi/BoomPar)
* [openssl](https://github.com/openssl/openssl) ($ sudo apt install libssl-dev)
* [zlib](https://github.com/madler/zlib) ($ sudo apt install zlib1g-dev)

**Download source code :**
* `git clone https://github.com/RohanVDvivedi/ConnMan.git`

**Build from source :**
* `cd ConnMan`
* `make clean all`

**Install from the build :**
* `sudo make install`
* ***Once you have installed from source, you may discard the build by*** `make clean`

## Using The library
* add `-lconnman -lboompar -lpthread -lcutlery -lssl -lcrypto -lz` linker flag, while compiling your application
* do not forget to include appropriate public api headers as and when needed. this includes
* `#include`
* `#include`
* `#include`
* `#include`
* `#include`
Additionally the library also provides the following stream apis, to create appropriate streams as per use.
* `#include`
* `#include`
* `#include`
* `#include`
* `#include`
* `#include`
* `#include`
Below is the list of headers that contain utility functions that can be used with the created streams.
* `#include`
Below header container allows you to manage multiple streams each chained with an underlying stream managed as a stack.
* `#include`

## Instructions for uninstalling library

**Uninstall :**
* `cd ConnMan`
* `sudo make uninstall`

## Third party acknowledgements
* *gzip and deflate compression streams, internally supported by [zlib](https://github.com/madler/zlib) checkout their website [here](https://zlib.net/).*
* *SSL and TLS encryption for ssl-ed streams, internally supported by [openssl](https://github.com/openssl/openssl) checkout their website [here](https://www.openssl.org/).*