找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 中文模块 Demo
查看: 3573|回复: 13

[Python] Python使用HPsocket

[复制链接]
发表于 2022-2-28 15:30:55 | 显示全部楼层 |阅读模式
Python使用HPsocket源码搜集与网络或群友共享源代码仅供参考!
& l" o$ z6 R; c2 v; Q- bHPSocket4Python
/ X& h' A+ w+ |% g6 q1 ~1.快速预览
1 ?/ I3 Z* j7 ^, O8 F/ O) z9 _+ NHPSocket4Python 是 HPSocket 的 Python 绑定,力图在 Python 上更方便的使用 HPSocket 组件。目前已经可以通过继承类的方式来使用 Tcp_PUSH_Server。 安装方式:
4 @# V9 M  `9 e2 \3 w' z1. pip install HPSocket
! ?9 n; p9 j8 Z$ V- t: x2. clone 本项目到本地,然后 import
' a$ I2 S, k+ ~: T+ r" ~; w3 n, }1 C7 h) \  G0 }# R% {* n! j
[Python] 纯文本查看 复制代码
# coding: utf-8

import time,sys,os
sys.path.append(os.getcwd())
sys.path.append(os.getcwd()+'/../')

from HPSocket import TcpPush
from HPSocket import helper
import HPSocket.pyhpsocket as HPSocket

class Server(TcpPush.HP_TcpPushServer):
    EventDescription = TcpPush.HP_TcpPushServer.EventDescription

    @EventDescription
    def OnAccept(self, Sender, ConnID, Client):
        (ip,port) = HPSocket.HP_Server_GetRemoteAddress(Sender=Sender, ConnID=ConnID)
        print('[%d, OnAccept] < %s' % (ConnID, (ip, port)))
        print('Current connected: %s' % repr(HPSocket.HP_Server_GetAllConnectionIDs(Sender)))

    @EventDescription
    def OnSend(self, Sender, ConnID, Data, Length):
        print('[%d, OnSend] > %s' % (ConnID, repr(Data)))

    @EventDescription
    def OnReceive(self, Sender, ConnID, Data, Length):
        print('[%d, OnReceive] < %s' % (ConnID, repr(Data)))
        self.Send(Sender=Sender, ConnID=ConnID, Data=Data)
        return HPSocket.EnHandleResult.HR_OK

    def OnClose(self, Sender, ConnID, Operation, ErrorCode):
        (ip, port) = HPSocket.HP_Server_GetRemoteAddress(Sender=Sender, ConnID=ConnID)
        print('[%d, OnClose] > %s opt=%d err=%d' % (ConnID, (ip, port), Operation, ErrorCode))
        return HPSocket.EnHandleResult.HR_OK


if __name__ == '__main__':
    svr = Server()
    if svr.Start(host='0.0.0.0', port=5555):
        print('server started.')
        while True:
            time.sleep(1)
    else:
        print('server fail.')

# O  [: Q* {1 Y6 r4 `4 m) ]为了能让 Python 开发者更好(lan)的使用 HP-Socket 这一高性能高可用的 Socket 框架, HPSocket4Python 对其进行无侵入绑定。HPSocket4Python 只是一个中间件,将 Python 的函数调用通过转换进而使用以C++为主要语言的 HP-Socket。由于语言的定义差异,Python 很难原汁原味的调用 C++ API,比如 Python 不支持基础类型的参数传址、数据结构(类)隐含了其它一些成员等,必须借助 ctypes 模块进行转换。HPSocket4Python 简化了这一系列步骤,力图让开发人员在 3 分钟之内完成基础架构并关注业务逻辑的实现。
7 k  U* v9 G7 N: ?4 T- i% b3.HPSocket4Python 如何实现的:
  ]% l, X* k5 L9 W  F7 Q. x7 m. f* w$ RHPSocket/HPSocketAPI.py --- 通过自动生成的文件,简单的封装API以及一些类型定义,对应 HPSocket4C.h 文件;
" d$ c  O# c! M' z' n$ n& g6 x) CHPSocket/HPTypeDef.py --- 通过自动生成的文件,简单封装类型定义,对应 HPTypeDef.h 文件;, u; G3 \. |9 }1 O$ D/ {9 X6 L5 ?5 f
HPSocket/pyhpsocket.py --- 半自动生成的文件,整个体系的高级封装,调用和返回完全使用 Python 的数据结构,可以直接使用而无需掌握 ctypes 的知识;
( ]' T' A5 X8 j( k2 OHPSocket/multiplatforms.py --- 跨平台适应模块,自动检测已知的平台并加载相应的动态库;
, d" D" e: b) P! P9 I! uHPSocket/Tcp[PACK/Push/Pull].py --- PACK/PUSH/PULL 模型的封装类,开发者可以直接继承然后重写相关的 On_ 族函数以实现业务逻辑。
$ X4 n& ?5 d& a+ i4.如何使用 HPSocket4Python:/ h! Z; K# T) a# R) I1 W" F6 ~' S$ ~/ E. Q
可以参考 Demo 目录下的示例,只需要继承你想使用的类,然后实现相应方法成员即可。 注意,需要在函数定义前添加 EventDescription 函数描述,否则应手动设置 HPSocket.EnHandleResult.HR_XXX 返回值,不然可能会出现未定义的行为。 这一版本的说明文档中暂未添加每条 API 的详细说明,计划在下一个版本推出。
+ j% y9 K/ k9 m2 B5 F) \  i5.已知的不足3 ]& h' v8 i5 P
· 由于完全使用 Python 实现,可能会有一定的性能损失; · 目前只支持 5.1.1 版本的动态库,更高版本的兼容性尚未进行覆盖测试; · 高级封装未能支持 HTTP,UDP 的高级封装未编写 DEMO;
# k0 U3 d3 e- {6.移植/跨平台
8 l( [. @" J$ [7 ^1 x/ S' _只需要宿主系统安装了 Python3 并且有完整的标准库即可。 包内提供了部分平台的动态库文件,若这之中不存在目标系统,则开发者需要自行编译 HP-Socket 库。# g3 w% m7 H# O- q7 l- r

  X/ z  K& v( h8 {/ Z8 v: V7 I" k
游客,如果您要查看本帖隐藏内容请回复

4 G9 q, P7 D1 j" l" q, i* z
发表于 2022-7-18 16:23:12 | 显示全部楼层
来看看吧.
回复

使用道具 举报

发表于 2022-10-2 16:57:08 | 显示全部楼层
这还没学会
回复

使用道具 举报

发表于 2022-12-26 15:38:28 | 显示全部楼层
看看隐藏
回复

使用道具 举报

发表于 2023-2-25 18:59:35 | 显示全部楼层
中需要呢
回复

使用道具 举报

发表于 2023-3-26 22:38:39 | 显示全部楼层
看看例子
回复

使用道具 举报

发表于 2023-5-11 15:31:07 | 显示全部楼层
夫斯卡德洛夫可是到了
回复

使用道具 举报

发表于 2024-2-13 17:23:58 | 显示全部楼层
感谢分享
回复

使用道具 举报

发表于 2024-3-27 21:35:19 | 显示全部楼层
这还没学会
回复

使用道具 举报

发表于 2024-9-9 15:13:43 | 显示全部楼层
学习一下实例
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

QQ|Archiver|手机版|小黑屋| HPsocket-国产高性能通讯框架

( 豫ICP备19038015号-1 ) GMT+8, 2025-4-24 12:56 Powered by Discuz! X3.5 *// |网站地图

快速回复 返回顶部 返回列表