Hp Socket

High Performance TCP/UDP/HTTP Communication Component
Alternatives To Hp Socket
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
4 days ago20mitDart
A powerful HTTP package for Dart/Flutter, which supports Global settings, Interceptors, FormData, Aborting and canceling a request, Files uploading and downloading, Requests timeout, Custom adapters, etc.
Halfrost Field11,208
9 months ago5cc-by-sa-4.0Go
✍🏻 这里是写博客的地方 —— Halfrost-Field 冰霜之地
Fast Android Networking5,536
19 days ago241apache-2.0Java
🚀 A Complete Fast Android Networking Library that also supports HTTP/2 🚀
Hp Socket5,053112 months ago1September 25, 201724otherC
High Performance TCP/UDP/HTTP Communication Component
Twisted4,9939,695551a day ago90April 11, 20222,742otherPython
Event-driven networking engine written in Python.
2 days ago18September 16, 202244apache-2.0Rust
A lightweight and high-performance reverse proxy for NAT traversal, written in Rust. An alternative to frp and ngrok.
Toxy2,703129a year ago25November 16, 201814mitJavaScript
Hackable HTTP proxy for resiliency testing and simulated network conditions
a day ago31lgpl-3.0C
A powerful server and network library, including coroutine, redis client, http, websocket, mqtt with C/C++ for multi-platform.
213 years ago19September 25, 201916mitObjective-C
a iOS network debug library, monitor HTTP requests
Aioquic1,23695 days ago36February 03, 202222bsd-3-clausePython
QUIC and HTTP/3 implementation in Python
Alternatives To Hp Socket
Select To Compare

Alternative Project Comparisons


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]


  1. Create listener object
  2. Create component object (and binding with listener object)
  3. Start component object
  4. Connect to dest host (for Agent Component only)
  5. process network events (OnConnect/OnReceive/OnClose etc.)
  6. Stop component object (optional: component object will be stopped before destroy in step 7)
  7. Destroy component object
  8. Destroy listener object

Agent Workflow


  • C++ Example
#include <hpsocket/HPSocket.h>

/* Listener Class */
class CListenerImpl : public CTcpPullServerListener

	// 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(ITcpServer* pSender);

int main(int argc, char* const argv[])
	// 1. Create listener object
	CListenerImpl s_listener;
	// 2. Create component object (and binding with listener object)
	CTcpPullServerPtr s_pserver(&s_listener);
	// 3. Start component object
	if(!s_pserver->Start("", 5555))
	/* wait for exit */
	// ... ... 
	// 6. (optional) Stop component object

	return 0;
	// 7. Destroy component object automatically
	// 8. Destroy listener object automatically
  • C Example
#include <hpsocket/HPSocket4C.h>

// 5. process network events
EnHandleResult __HP_CALL OnConnect(HP_Agent pSender, HP_CONNID dwConnID);
EnHandleResult __HP_CALL OnReceive(HP_Agent pSender, HP_CONNID dwConnID, int iLength);
EnHandleResult __HP_CALL OnSend(HP_Agent pSender, HP_CONNID dwConnID, const BYTE* pData, int iLength);
EnHandleResult __HP_CALL OnClose(HP_Agent pSender, HP_CONNID dwConnID, En_HP_SocketOperation enOperation, int iErrorCode);
EnHandleResult __HP_CALL OnShutdown(HP_Agent pSender);

int main(int argc, char* const argv[])
	HP_TcpPullAgentListener s_listener;
	HP_TcpPullAgent s_agent;

	// 1. Create listener object
	s_listener = ::Create_HP_TcpPullAgentListener();
	// 2. Create component object (and binding with listener object)
	s_agent    = ::Create_HP_TcpPullAgent(s_listener);
	/* Set listener callbacks */
	::HP_Set_FN_Agent_OnConnect(s_listener, OnConnect);
	::HP_Set_FN_Agent_OnSend(s_listener, OnSend);
	::HP_Set_FN_Agent_OnPullReceive(s_listener, OnReceive);
	::HP_Set_FN_Agent_OnClose(s_listener, OnClose);
	::HP_Set_FN_Agent_OnShutdown(s_listener, OnShutdown);
	// 3. Start component object
	if(!::HP_Agent_Start(s_agent, "", TRUE))
	// 4. Connect to dest host
	::HP_Agent_Connect(s_agent, REMOTE_HOST_1, REMOTE_PORT_1, nullptr);
	::HP_Agent_Connect(s_agent, REMOTE_HOST_2, REMOTE_PORT_2, nullptr);
	::HP_Agent_Connect(s_agent, REMOTE_HOST_3, REMOTE_PORT_3, nullptr);
	/* wait for exit */
	// ... ... 
	// 6. (optional) Stop component object

	// 7. Destroy component object
	// 8. Destroy listener object
	return 0;

Component List

  • Basic Components

Basic Component

  • SSL Components

SSL Component

  • HTTP Components

HTTP COmponent

Reference Projects

Extension Projects

Technical Exchange Groups

Popular Network Projects
Popular Http Projects
Popular Networking Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
C Plus Plus