HP-Socket

    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。     为了让使用者能方便快速地学习和使用 HP-Socket ,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前运行在 Windows 平台,将来会实现跨平台支持。

HP-Socket 的设计充分注重功能、通用型、易用性与伸缩性:

通用性

  • HP-Socket 的唯一职责就是接收和发送字节流,不参与应用程序的协议解析等工作。
  • HP-Socket 与应用程序通过接口进行交互,并完全解耦。任何应用只要实现了HP-Socket的接口规范都可以无缝整合 HP-Socket。

易用性

  • 易用性对所有通用框架都是至关重要的,如果太难用还不如自己重头写一个来得方便。因此,HP-Socket 的接口设计得非常简单和统一。
  • HP-Socket 完全封装了所有底层通信细节,应用程序不必也不能干预底层通信操作。通信连接被抽象为Connection ID,Connection ID 作为连接的唯一标识提供给应用程序来处理不同的连接。

高性能

HP-Socket 作为底层的通用框架,性能是关键指标,绝对不能成为系统的瓶颈。HP-Socket 在设计上充分考虑性能、使用场景、复杂性和易用性等因素,作出以下几点设计决策:

  • Client 组件:基于 Event Select 通信模型,在单独线程中执行通信操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。
  • Server 组件:基于 IOCP 通信模型,并结合缓存池、私有堆(Private Heap)等技术,支持超大规模连接,在高并发场景下实现高效内存管理。
  • Agent 组件:对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接,一个 Agent 组件对象同时可管理多个 Socket 连接;Agent 组件与 Server 组件采用相同的技术架构,可以用作代理服务器或中转服务器的客户端部件。

伸缩性

应用程序能够根据不同的容量要求、通信规模和资源状况等现实场景调整 HP-Socket 的各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源配置,在满足应用需求的同时不必过度浪费资源。

Server 组件执行流程

Agent 组件执行流程

Client 组件执行流程

ldcsaa             /              HP-Socket

Watch192         Fork166

High Performance TCP/UDP Socket Component — More...

http://www.jessma.org

master分支代码最近更新:2015-02-09

http://www.oschina.net/p/hp-socket

时间: 2024-11-06 14:36:57

HP-Socket的相关文章

简易HTTP代理的实现

     编写一个简易的HTTP代理服务器,步骤其实很简单:      1.设置一个监听套接字gListen_Socket;      2.每当接受到客户端的请求之后,我们构建一个新的线程来继续监听客户端的请求,然后原线程处理用户请求:      3.先从用户发送的HTTP请求中解析出服务器端的主机地址,然后通过另外一个线程连接到服务器:      4.本程序充当中介,不断转发来自两端的消息:      5.通信结束后,关闭套接字即可.       这个程序当中,有一些函数可能不太熟悉windo

Linux_C socket 数据报之client, server.c

dgrecv.c 1 /**************************************************************** 2 * dgrecv.c - datagram receiver 3 * usage: dgrecv portnum 4 * action: listens at the specfied port and reports messages 5 */ 6 #include <stdio.h> 7 #include <stdlib.h&g

Linux_C socket 数据报之一些辅助函数

1 /******************************************************************** 2 * dgram.c 3 * support functions for datagram based programs 4 */ 5 #include <stdio.h> 6 #include <unistd.h> 7 #include <sys/types.h> 8 #include <sys/socket.h>

Linux下的socket编程实践(四)TCP服务端优化和常见函数

并发下的僵尸进程处理 只有一个进程连接的时候,我们可以使用以下两种方法处理僵尸进程: 1)通过忽略SIGCHLD信号,避免僵尸进程 在server端代码中添加 signal(SIGCHLD, SIG_IGN); 2)通过wait/waitpid方法,解决僵尸进程 signal(SIGCHLD,onSignalCatch); void onSignalCatch(int signalNumber) { wait(NULL); } 那么如果是多进程状态下多个客户端同时关闭呢? 我们可以用下面的客户端

通过HP Loadrunner VuGen来录制安卓的应用

通过HP Loadrunner VuGen来录制安卓的应用 发布时间: 2015-1-12 13:13    作者: Elaine00    来源: 51Testing软件测试网采编 字体:  小  中  大  | 上一篇 下一篇 | 打印  | 我要投稿  | 推荐标签: 性能测试 性能测试工具 软件测试工具 LoadRunner 通过这篇文章,我将介绍如何通过HP Loadrunner VuGen来测试一个安卓应用的网络流量.测试过程中,安卓的SDK将用来执行安卓应用,同时HP Loadru

HP Microserver Gen8 Processor FAQ

http://homeservershow.com/forums/index.php?/topic/6596-hp-microserver-gen8-processor-faq/ This guide is a work in progress.  After reading some other people's questions about processors for the Microserver Gen8, including "What's the best choice for

socket计划编制的原则

socket编程原理 1.问题的引入 1) 普通的I/O操作过程: UNIX系统的I/O命令集,是从Maltics和早期系统中的命令演变出来的,其模式为打开一读/写一关闭(open-write-read-close).在一个用户进程进行I/O操作时,它首先调用"打开"获得对指定文件或设备的使用权,并返回称为文件描写叙述符的整型数,以描写叙述用户在打开的文件或设备上进行I/O操作的进程.然后这个用户进程多次调用"读/写"以数据传输.当全部的传输操作完毕后,用户进程关闭

Linux_C socket 服务器与客户端交互程序(输入小写转换为大写)

client.c 1 /* interactionSocket/client.c 2 * 实现终端与服务器端的交互式输入输出 3 */ 4 #include <stdio.h> 5 #include <stdlib.h> 6 #include <string.h> 7 #include <unistd.h> 8 #include <sys/types.h> 9 #include <sys/socket.h> 10 #include &

weblogic 12C 在HP unix运行CPU 100%

有几个服务发布在HP unix上,weblogic版本是12c,服务器经常100%(多个cpu均是100%).分析过当前的进程的状态,都是在GC.现象是CPU使用率上去以后就下不来了. 然后把weblogic降到10g,重新部署系统,CPU就降下来了,推测是服务器和weblogic不兼容. 打开weblogic的console界面:   服务器-->选中服务--> 配置-->优化 --> 高级--> muxer类:weblogic.socket.NTSocketMuxer 改

Linux_C socket server.c clinet.c功能分开写

socklib.h1 int make_server_socket(int ); 2 int connect_to_server(char* , int ); 3 int process_request(int ); 4 int talk_with_server(int ); socklib.c 1 /* socklib.c 2 * This file contains functions used lots when writing internet 3 * client/ server pr