找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 中文模块 Demo
查看: 829|回复: 8

[C++] QT使用HPSocket,QTHPSocketDemo

[复制链接]
发表于 2022-10-8 19:15:14 | 显示全部楼层 |阅读模式

) L, |8 W/ Z4 h  z) rQT使用HPSocket,QTHPSocketDemo
2 k$ ~( D6 W. w* Q# l% d* h! m" F- {7 V
[C#] 纯文本查看 复制代码
#include "ServerListener.h"

#include <QDebug>
#include <QString>
#include <QByteArray>
ServerListener* ServerListener::mServerListener=nullptr;
std::mutex ServerListener::mMutex;
ServerListener::ServerListener()
    :mServerView(nullptr),
     mServer(this)
{

}






ServerListener *ServerListener::getInstance()
{
    ServerListener* tmp = mServerListener;
    if (tmp == nullptr)
    {
        std::lock_guard<std::mutex> lock(mMutex);
        tmp = mServerListener;
        if (tmp == nullptr)
        {
            tmp = new ServerListener();
            mServerListener = tmp;
        }
    }
    return mServerListener;
}



void ServerListener::registerServerView(IServerView *serverView)
{
    mServerView=serverView;
}

void ServerListener::unRegisterServerView(IServerView *serverView)
{
    if(mServerView==serverView)
        mServerView=nullptr;
}

EnHandleResult ServerListener::OnPrepareListen(ITcpServer *pSender, SOCKET soListen)
{

    TCHAR szAddress[50];
    int iAddressLen = sizeof(szAddress) / sizeof(TCHAR);
    USHORT usPort;
    pSender->GetListenAddress(szAddress,iAddressLen,usPort);

    QString serverAddr=QString::fromWCharArray(szAddress);

    if(mServerView!=nullptr)
    {
        mServerView->onPrepareListen(serverAddr,usPort);
    }

    return EnHandleResult::HR_OK;
}

EnHandleResult ServerListener::OnAccept(ITcpServer *pSender, CONNID dwConnID, SOCKET soClient)
{
    TCHAR szAddress[50];
    int iAddressLen = sizeof(szAddress) / sizeof(TCHAR);
    USHORT usPort;

    pSender->GetLocalAddress(dwConnID,szAddress,iAddressLen,usPort);

    QString localAddr=QString::fromWCharArray(szAddress);

    TCHAR remoteAddress[50];
    int remoteAddressLen =sizeof(remoteAddress) / sizeof(TCHAR);
    USHORT remotePort;


    pSender->GetRemoteAddress(dwConnID,remoteAddress,remoteAddressLen,remotePort);

    QString remoteAddr=QString::fromWCharArray(remoteAddress);


    if(mServerView!=nullptr)
    {
        mServerView->onAccept(localAddr,usPort,remoteAddr,remotePort,dwConnID);
    }



    return EnHandleResult::HR_OK;
}

EnHandleResult ServerListener::OnSend(ITcpServer *pSender, CONNID dwConnID, const BYTE *pData, int iLength)
{

    return EnHandleResult::HR_OK;
}

EnHandleResult ServerListener::OnReceive(ITcpServer *pSender, CONNID dwConnID, const BYTE *pData, int iLength)
{
    TCHAR szAddress[50];
    int iAddressLen = sizeof(szAddress) / sizeof(TCHAR);
    USHORT usPort;
    pSender->GetLocalAddress(dwConnID,szAddress,iAddressLen,usPort);
    QString localAddr=QString::fromWCharArray(szAddress);
    QByteArray data =QByteArray((const char*)pData,iLength);


    if(mServerView!=nullptr)
    {
        mServerView->onReceive(localAddr,usPort,data,iLength,dwConnID);
    }


    return EnHandleResult::HR_OK;
}

EnHandleResult ServerListener::OnClose(ITcpServer *pSender, CONNID dwConnID, EnSocketOperation enOperation, int iErrorCode)
{
    if(mServerView!=nullptr)
    {
        mServerView->onClose();
    }

    return EnHandleResult::HR_OK;
}

EnHandleResult ServerListener::OnShutdown(ITcpServer *pSender)
{
    if(mServerView!=nullptr)
    {
        mServerView->onShutdown();
    }

    return EnHandleResult::HR_OK;
}
# a, ?7 k/ U" E3 }, m; n' K: B$ Y. @2 A
  ^4 T; [4 [3 Z1 M: {
$ C+ V' L( ^$ K; s* q, k
( v: y9 [. l4 `9 b5 S7 t% `
游客,如果您要查看本帖隐藏内容请回复
4 o9 ~( n: c* N% Q( @  V5 N
2 ?* H+ Z2 G, h* \7 Z) G5 P
发表于 2022-12-26 17:35:47 | 显示全部楼层
看看隐藏
回复

使用道具 举报

发表于 2023-1-29 09:20:37 | 显示全部楼层
看看隐藏内容
回复

使用道具 举报

发表于 2023-3-18 09:13:21 | 显示全部楼层
0 l% K2 x/ V4 N0 K; c4 }7 }
看看隐藏内容
回复

使用道具 举报

发表于 2023-11-20 17:31:01 | 显示全部楼层
看一下内容
回复

使用道具 举报

发表于 2023-11-20 18:11:07 | 显示全部楼层
必须给点个赞QT使用HPSocket,QTHPSocketDemo2130
回复

使用道具 举报

发表于 2023-11-22 14:29:47 | 显示全部楼层
支持vs编译器?不支持mingw的?
回复

使用道具 举报

发表于 2024-9-9 15:19:39 | 显示全部楼层
学习一下!
回复

使用道具 举报

发表于 2024-12-30 05:39:20 | 显示全部楼层
学习一下
回复

使用道具 举报

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

本版积分规则

关闭

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

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

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

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