High Performance Network Framework
- Server Based on IOCP/EPOLL communication model, combined with technology of memory pool, private heap etc., efficient memory management is implemented to support large scale and high concurrent communication scenarios.
- Agent The Agent component is essentially a Multi-Client component that uses the same technical architecture as the Server component. An Agent component object can create and efficiently handle large-scale Socket connections at the same time.
- Client Based on Event-Select/POLL communication model, each component object creates a communication thread and manages a Socket connection. Client components are suitable for small-scale client scenarios.
- HP-Socket Development Guide [pdf]
- HP-Socket Class Diagram [uml]
- HP-Socket Class Diagram [jpg]
- HP-Socket SSL Class Diagram [jpg]
- HP-Socket HTTP Class Diagram [jpg]
- Create listener object
- Create component object (and binding with listener object)
- Start component object
- Connect to dest host (for Agent Component only)
- process network events (OnConnect/OnReceive/OnClose etc.)
- Stop component object (optional: component object will be stopped before destroy in step 7)
- Destroy component object
- Destroy listener object
- C++ Example
#include <hpsocket/HPSocket.h>
/* Listener Class */
class CListenerImpl : public CTcpPullServerListener
{
public:
// 5. process network events
virtual EnHandleResult OnPrepareListen(ITcpServer* pSender, SOCKET soListen);
virtual EnHandleResult OnAccept(ITcpServer* pSender, CONNID dwConnID, UINT_PTR soClient);
virtual EnHandleResult OnHandShake(ITcpServer* pSender, CONNID dwConnID);
virtual EnHandleResult OnReceive(ITcpServer* pSender, CONNID dwConnID, int iLength);
virtual EnHandleResult OnSend(ITcpServer* pSender, CONNID dwConnID, const BYTE* pData, int iLength);
virtual EnHandleResult OnClose(ITcpServer* pSender, CONNID dwConnID, EnSocketOperation enOperation, int iErrorCode);
virtual EnHandleResult OnShutdown
