In order to start efficient development using qp2p it's recommended you first get basic knowledge about system concepts.
quickP2P is a complete environment that enables you to develop "out of the box" peer-to-peer applications. quickP2P is super-node based peer-to-peer system. Server (super-node) infrastructure is not part of this document thematic. Although the network is fully scalable and unlimitedly spreadable where new super-nodes form "point of peer's view" all it needs to know is that he needs to contact one super-node to become part of the network.
Main quickP2P system aspects are:
· NAT Traversal: a process of direct communication channel creation between two peers no matter if they are both behind of NAT devices or no. The result of the operation is in connected TCP or ready to send/receive UDP socket. Then you just use as in regular application using regular sockets API.
· Peer lookup: an easy way of finding or distinguishing one or many peers currently online by fully customizable metadata. Lookup scope is limited to particular application you use.
· Peer state tracking and broadcasting. Ability to instantly get notification of peers’ state changes and to be able to broadcast local peer state to others easily. Example of that you can see commonly in chat applications where you can find something like user status indicator away, offline, busy ... so this is a handy feature for every peer-to-peer application.
· Instant messaging. Sub instant message system is a handy tool for cases of tunnel pre-negotiation, passing control messages and chat like communication. NAT traversal operation can be completed in 1-15 seconds from moment of tunnel request to the moment when you can start using tunneled socket. So it's not always practical to initiate tunnel opening just to pass a small amount of data to another peer
· Index storage. There is always a need to store permanently (until explicitly not requested to change) some meta-data about your application users. We offer two abstractions: Virtual User and Virtual Network. API index storage interface provides you methods for their management and lookup by meta-data you define at your will. Network scope is limited to particular application you use.
· Data encryption and secure key exchange. Peer-to-peer (direct) communications are by its nature more secure in terms of data secrecy than client-server and client-server-client communications. Since many applications goal it to exploit this feature, we also added an easy way to secure key exchange and data encryption/decryption.
This enables you to focus directly on your application and start developing straight away, not worrying about auxiliary web services you would normally need.
Client API is available for .Net, native c++ STL fully mixable with Objective C++ and java as wrapper (android SDK). This puts no limits to platforms you are planning to support with your application. All API versions are very look-a-like with the only difference in programming language syntax.