Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Dio | 11,521 | 4 days ago | 20 | mit | Dart | |||||
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 Field | 11,208 | 9 months ago | 5 | cc-by-sa-4.0 | Go | |||||
✍🏻 这里是写博客的地方 —— Halfrost-Field 冰霜之地 | ||||||||||
Fast Android Networking | 5,536 | 19 days ago | 241 | apache-2.0 | Java | |||||
🚀 A Complete Fast Android Networking Library that also supports HTTP/2 🚀 | ||||||||||
Hp Socket | 5,053 | 1 | 1 | 2 months ago | 1 | September 25, 2017 | 24 | other | C | |
High Performance TCP/UDP/HTTP Communication Component | ||||||||||
Twisted | 4,993 | 9,695 | 551 | a day ago | 90 | April 11, 2022 | 2,742 | other | Python | |
Event-driven networking engine written in Python. | ||||||||||
Rathole | 4,948 | 2 days ago | 18 | September 16, 2022 | 44 | apache-2.0 | Rust | |||
A lightweight and high-performance reverse proxy for NAT traversal, written in Rust. An alternative to frp and ngrok. | ||||||||||
Toxy | 2,703 | 12 | 9 | a year ago | 25 | November 16, 2018 | 14 | mit | JavaScript | |
Hackable HTTP proxy for resiliency testing and simulated network conditions | ||||||||||
Acl | 2,539 | a day ago | 31 | lgpl-3.0 | C | |||||
A powerful server and network library, including coroutine, redis client, http, websocket, mqtt with C/C++ for multi-platform. | ||||||||||
Networkeye | 1,299 | 21 | 3 years ago | 19 | September 25, 2019 | 16 | mit | Objective-C | ||
a iOS network debug library, monitor HTTP requests | ||||||||||
Aioquic | 1,236 | 9 | 5 days ago | 36 | February 03, 2022 | 22 | bsd-3-clause | Python | ||
QUIC and HTTP/3 implementation in Python |
High Performance Network Framework
#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(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("0.0.0.0", 5555))
exit(1);
/* wait for exit */
// ... ...
// 6. (optional) Stop component object
s_pserver->Stop();
return 0;
// 7. Destroy component object automatically
// 8. Destroy listener object automatically
}
#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, "0.0.0.0", TRUE))
exit(1);
// 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
::HP_Agent_Stop(s_agent);
// 7. Destroy component object
::Destroy_HP_TcpPullAgent(s_agent);
// 8. Destroy listener object
::Destroy_HP_TcpPullAgentListener(s_listener);
return 0;
}