iAuxNET is a portable and high-performance C++ network API library. iAuxNET provides all necessary tools to build a network application in a very short period of time and it is one of the most advanced and universal network libraries available. The performance capabilities of the library are enormous that is necessary for server-side applications, but due to a well designed interface and extremely convenient communication protocols and higher level layers - iAuxNET is an excellent choice for a full client - server communication model.
Universal
iAuxNET is a universal network library and provides such API design which will satisfy as sophisticated network oriented games so and other applications which operate with network events. For the game industry iAuxNET provides robust platform and suits well to develop network core for MMO titles using TCP protocol and for Shooters which require low-latency communication over UDP protocol.
iAuxNET makes it possible to mix communication over TCP and UDP protocols in a single application that is one of the unique features on the market.
Client & Server
iAuxNET network library has no limits and can be used from server side or from client side. Moreover, its built-in high-level protocols allow robust and efficient communication of server and clients built on a single network engine.
Low & High Level
API design provides two types of operations:
1. Low-level direct network data and data events processing:
This type allows to build communication with any application, e.g. making just client or server side application, or both. Developer deals with raw network data and thus builds protocol by him self.
2. Abstracted protocol-oriented high-level operations:
iAuxNET offers own implementation of communication protocol for TCP and UDP types of sockets. These protocols provide data checking (CRC7), full data encryption (BlowFish, TwoFish, GOST 28147-89,...) for packet headers and containing data.
This type of operations is advised to build client-server applications when both applications are accessible for development.
Communication Layers
iAuxNET API provides special mechanism to build a tree or chain of communication layers which can receive and process packets and all other network events when they come. It is possible to set different priorities to these communication layers that delivers quality of service mechanism for the developer.
IP Firewall
iAuxNET has built-in IP firewall protection for incoming connections which can be activated for any TCP/UDP listener. Firewall also controls incoming broad-/multi-casted connections. It operates in four modes: Allow All, Deny All, Allow then Deny, Deny then Allow.
RPC (Remote Procedure Call)
iAuxNET supports calling of global C or class C++ remote procedures. RPC supports all primitive numeric types, single and multidimensional arrays of numeric or POD (structure/union) types. RPC core allows to provide own deserialization interface for more complex types which are used as function parameters. RPC core is not global interface in iAuxNET and can be hosted by multiple protocol layers (ILayer). It is even possible to create chains of RPC layers where each manages own number of RPC callable functions.
High Performance
iAuxNET network library can be characterized by extremely low latency times and CPU and memory usage on thousands of active connections. It uses IO Completion Ports technology for Windows platforms, Enhanced Poll (epoll) for Linux, and Kernel Queue (kqueue) for BSD family OSes like MacOSX, although developer may downgrade the use of these advanced technologies to a simple methods like Select, Poll depending on platform.
Optimal Bandwidth
An advanced implementation of the data bufferingallows to build network packets using any suitable technique for the developer and without a need to worry about waste of network bandwidth due to large numeric types used for the packets. It is possible to avoid using optimal numeric types for the communication while at the same time not-optimal for the possible values that application may generate due to its processing or future operation. The packet may use big enough data types and will not waste spare bits of network traffic due to packing mechanism of the iAuxNET buffering class.
Multicasting & Broadcasting
iAuxNET also supports multi-casting/broadcasting technology and it is possible to use iAuxNET own higher level communication protocols for that. Designing such type of network applications becomes a very simple task for a developer as library hides all specifics of each OS platform unloading developer from specific application porting issues.
Mobile Platform
iAuxNET supports popular mobile platforms - Windows Mobile 6 and iPhone. It allows to port any PC application to mobile platform in just few seconds of compilation time!
Features
- Communication protocols: TCP, UDP.
- Address families: IPv4, IPv6.
- High-level protocols for TCP and UDP communication.
- Back-end: Select, Poll, KQueue, Epoll, IO Completion Ports.
- Supports RPC (Remote Procedure Call).
- Built-in cryptographic services:
- Hash generators: CRC32, CRC64, MD-5, SHA-1;
- Block ciphers: TwoFish, BlowFish, GOST 28147-89;
- Stream ciphers: Alleged RC4, OFB mode for block ciphers, CFB mode for block ciphers;
- Message Authentication Code: HMAC;
- Custom user algorithms are possible.
- Provides low-level interface for Poll, Epoll. Please note, iAuxNET Poll emulation is 2x faster than WSAPoll interface under Windows Vista, Epoll emulation uses IOCP for Windows platform. Epoll emulation allows to port native Linux applications which use epoll() to a Windows or MacOSX platforms.
- Data compression services: DEFLATE algorithm (LZ77/Huffman encoding).
- Seamless operations between little- and big- endian machines.
- Advanced network related tools: address/host resolving, network interface resolving, dimensionless bit-masks, network optimized data types.
- User-friendly C++ interface and rich in-line documentation.
- Capable of large number of active client connections in client-server/broadcasting/multi-casting network model.
- OS: Windows XP/Vista/7 (32/64 bit), Windows Mobile 6 (ARMV4I), Linux (32/64 bit), MacOSX 10.5.4+ (32/64 bit), iPhone (Device/Simulator).