MINA服务端与C++客户端通讯(2)

游戏服务端通讯框架实现 从事游戏开发前阵子通过找一些相关资料, 阅读详情

from:http://www.cppblog.com/chugf/archive/2011/07/05/150224.aspx

Java与C++通讯还有编码转码的问题存在,假设通讯编码采用UTF-8

C++客户端发送时需要转码成UTF-8编码,接收服务端应答消息后再转回Unicode或者GBK编码

下面给出完成的C++客户端通讯示例:

void Transcoding(LPCTSTR src, UINT srcCode, string& dest, UINT destCode)   
{   
    int len = MultiByteToWideChar(srcCode, 0, src, -1, NULL, 0);     
    WCHAR* srcTemp = new WCHAR[len];     
    MultiByteToWideChar(srcCode, 0, src, -1, srcTemp, len);     
    len = WideCharToMultiByte(destCode, 0, srcTemp, -1, NULL, 0, NULL, NULL);     
    char* destTemp = new char[len];     
    WideCharToMultiByte(destCode, 0, srcTemp, -1, destTemp, len, NULL, NULL);     
  
    dest = destTemp;   
  
    delete []srcTemp;     
    delete []destTemp;     
}  
  
int _tmain(int argc, _TCHAR* argv[])  
{  
    // client connect  
    CXSocket client;  
    client.initWinSocket();  
    client.setAddress("127.0.0.1");  
    client.setPort(1234);  
    client.setProtoType(TCP);  
    int ret = client.connect();  
    if(ret < 0)  
    {  
        getchar();  
        return 0;  
    }  
  
    // 加通讯协议头demo  
    // client send  
    char send[] = {"CXSocket 第一个测试用例."};  
  
    string utf8;  
    Transcoding(send, CP_ACP, utf8, CP_UTF8);  
  
    XNET::TPacketHeader sendHeader;  
    sendHeader.m_HeaderSig = 0xABCD;  
    swap_2(sendHeader.m_HeaderSig);  
    sendHeader.m_Length = (int)utf8.length();  
    swap_4(sendHeader.m_Length);  
  
    char buffer[1024] = {0};  
    memcpy(buffer, &sendHeader, XNET::TCP_HEADLEN);  
    memcpy(&buffer[XNET::TCP_HEADLEN], utf8.c_str(), utf8.length());  
    client.sendBuf(buffer, (int)(XNET::TCP_HEADLEN + utf8.length()));  
  
    // client recv  
    XNET::TPacketHeader recvHeader;  
    client.receiveBuf(&recvHeader, XNET::TCP_HEADLEN);  
    swap_2(recvHeader.m_HeaderSig);  
    swap_4(recvHeader.m_Length);  
    char* recv = new char[recvHeader.m_Length + 1];  
    memset(recv, 0, recvHeader.m_Length + 1);  
    client.receiveBuf(recv, recvHeader.m_Length);  
    string ansi;  
    Transcoding(recv, CP_UTF8, ansi, CP_ACP);  
  
    client.close();  
    client.uninitWinSocket();  
  
    getchar();  
  
    return 0;  
}  

CXSocket类下载地址:http://code.google.com/p/x-net/

MINA服务端Demo下载地址:http://download.youkuaiyun.com/source/3418326


C++异步网络IO库,仿java的mina实现 前段时间整理一下代码,仿照java的mina自己做了一套C++的异步socket IO 框架。 编译环境: fedora 10 / cenos 5.4 / cygwin gcc version 4.3.2 其他linux环境没试过,不过应该也没啥问题。 使用到的库: 如果光使用socket 只需要 apr-1 库即可, 我用的版本是 0.3.8 代码中集成了 config++ 一个读配置文件的库。 log4cxx log4j 的 C++ 版本,写日志的。 Postgresql开发 使用了 pqxx 库 这是基于 pq库(postgresql 的 c 语言api ) 的c++库 工程 core : 库工程 工程 tools: 例子 motcp socket存储转发功能,可以将通信的包以十六进制的格式打印出来,调试网络程序的好帮手 echoserv echo 服务器,把客户端的数据不更改地返回。 编译,提供两种编译模式,windows的cygwin环境,还有linux环境。不用配置,直接make即可。 先编译core工程,在core工程下直接执行make指令 然后编译tools 工程 , 在工程下直接执行 make 指令 开发环境 eclipse cdt 立即下载

相关推荐

mina2 cs 客户端服务器通信 已经实现完整通信代码

mina2 cs 客户端服务器通信 已经实现完整通信代码

MINA服务端与C++客户端通讯

最近学习了Apache MINA通讯,在使用过程中碰到了一些问题,记录下一些心得。 在服务端和客户端都使用MINA提供的库时,通讯一切正常,当我把客户端改为C++代码时,发现客户端发送给服务端的二进制流中的整形数据,位置被倒置了。 C++客户端16进制  :0x00000013 MINA服务端16进制:0x13000000 查询了网上资料后才知道Java在所有平台上都默认是big-endi...

weixin_34220623的博客 276

PFC胶结模型实战:从线性到平行粘结的力学行为解析

本文深入解析了PFC中线性接触与平行粘结(pb模型)的核心差异与应用。平行粘结模型通过模拟胶结层的力学行为,能够有效传递拉力和抵抗弯矩,是模拟岩石、混凝土等胶结材料的关键。文章详细介绍了其变形与强度参数的设置、法向与切向行为的验证方法,并揭示了全量与增量力计算中易出现的“幽灵力”问题及其解决方案,为复杂模型的构建与调试提供了实用策略。

weixin_29230773的博客 1208

C/C++ 函数模板

#include template Type min (Type array[],int size){ Type minval=array[0]; for(int i=1;i { if(array[i] minval=array[i]; } return minval;}

Hsing Hsu's Blog 721

Win系统蓝牙设备频繁卡顿/断连 - 解决方案

无线网卡有2个模块,一个是WiFi,一个是蓝牙,因此蓝牙问题可能和无线网卡有关。在某些情况下,例如高温或WiFi速率过高,会导致蓝牙频繁卡顿/断连。解决方法分为2种,1是更新驱动,2是更换无线网卡。

NSJim的博客 2万+

利用Nginx反向代理实现GitLab自定义域名的高效配置

本文详细介绍了如何利用Nginx反向代理实现GitLab自定义域名的高效配置。通过统一域名管理、性能优化和安全加固,提升GitLab的访问效率和安全性。文章包含前期准备、GitLab基础配置、Nginx反向代理设置及常见问题排查,帮助开发者快速完成部署。

weixin_28834169的博客 164

MINA服务端与C++客户端通讯(1)

Apache MINA通讯;C++客户端

国风的Blog 788

富士SC2022,C325,C328打印机扫描到网络详细教程

富士打印机SC2022,C328,C325等型号扫描到电脑教程

weixin_41926602的博客 1万+

MINA服务端与C++客户端通讯 2

Java与C++通讯还有编码转码的问题存在,假设通讯编码采用UTF-8 C++客户端发送时需要转码成UTF-8编码,接收服务端应答消息后再转回Unicode或者GBK编码 下面给出完成的C++客户端通讯示例: void Transcoding(LPCTSTR src, UINT srcCode, string& dest, UINT destCode)   {       int l

CTO=开发管理+架构+技术专栏 647

大模型系列——一文看懂“提示词” vs “提示词工程” vs “上下文工程”

本文区分了AI领域的三个关键概念:提示词(Prompt)、提示词工程(Prompt Engineering)和上下文工程(Context Engineering)。提示词是直接输入给AI模型的指令文本;提示词工程则是系统化设计、测试和优化提示词的过程;而上下文工程是为AI构建动态上下文,提供恰当信息和工具的科学与艺术。文章通过翻译案例展示了提示词工程的迭代过程,并说明上下文工程在AI Agent中的核心作用——动态收集和组织必要信息。最后强调普通人只需掌握提示词编写,开发AI应用才需深入提示词工程,构建智能

2401_84052244的博客 750

【Pix4d精品教程】pix4d mapper相机未校准后手动添加连接点完美案例图文教程

如图所示,红色的照片为未校准的图片,软件无法自动获取连接点,有关相机未校准的原因及解决办法,可以参考《pix4d未校准相机:287 out of 402 images calibrated (71%), all images enabled, 6 block,问题分析及解决方案汇总》,本文以案例的形式,详细讲解pix4d中手动添加连接点的方法及操作步骤。 文章目录1. 手动添加连接点2. 重新优化3. 生成质量报告,检查精度 1. 手动添加连接点 在【空三射线】模式下查看校准失败的图片,记下照片的名称。.

智慧空间实验室 2万+

mina服务端与c++客户端通信2

原文地址:http://www.cppblog.com/chugf/archive/2011/07/05/150224.html Java与C++通讯还有编码转码的问题存在,假设通讯编码采用UTF-8 C++客户端发送时需要转码成UTF-8编码,接收服务端应答消息后再转回Unicode或者GBK编码 下面给出完成的C++客户端通讯示例: void T...

aikb6223的博客 103

[nlp] 自然语言理解基准 ATIS Snips

ATIS 4k 21 Intents(not include UNK) 120 SlotsSNIPS 13k 7 Intents(not include UNK) 72 SlotsATIS Benchmark (Intent Detection) | Papers With CodeSNIPS Benchmark (Intent Detection) | Papers With Code

心宝的博客 747

MINA服务端与C++客户端通讯 1

最近学习了Apache MINA通讯,在使用过程中碰到了一些问题,记录下一些心得。 在服务端和客户端都使用MINA提供的库时,通讯一切正常,当我把客户端改为C++代码时,发现客户端发送给服务端的二进制流中的整形数据,位置被倒置了。 C++客户端16进制  :0x00000013 MINA服务端16进制:0x13000000 查询了网上资料后才知道Java在所有平台上都默认是big-endi

CTO=开发管理+架构+技术专栏 645

材料仿真软件:LAMMPS_(8).温度和压力控制

在 LAMMPS 中,温度和压力的控制是通过多种恒温器和恒压器实现的。Nose-Hoover 恒温器和恒压器因其准确性和广泛适用性而被经常使用,而 Berendsen 恒温器和恒压器则因其计算效率高而适用于初步仿真或粗粒化模型。温度重标和压力重标方法虽然简单,但在某些情况下可以快速调整系统的温度和压力。通过选择合适的控制方法,可以根据具体的需求和系统特性来设计和运行分子动力学仿真,从而获得准确和可靠的结果。在实际应用中,建议先进行初步的仿真以确定合适的控制参数,然后再进行细致的仿真以验证结果的稳定性。

kkchenjj的博客 1692

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

mina服务端与c++客户端通信1

最近学习了Apache MINA通讯,在使用过程中碰到了一些问题,记录下一些心得。 在服务端和客户端都使用MINA提供的库时,通讯一切正常,当我把客户端改为C++代码时,发现客户端发送给服务端的二进制流中的整形数据,位置被倒置了。 C++客户端16进制 :0x00000013 MINA服务端16进制:0x13000000 查询了网上资料后才知道Jav...

aikb6223的博客 105

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

上一篇: MINA服务端与C++客户端通讯(1)
下一篇: 职业规划之后,还需要什么?职业规划与职业选择 - 续集
Qicz
博客等级 码龄16年 56粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值