`
zzc1684
  • 浏览: 1230926 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

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

    博客分类:
  • Mina
阅读更多

 

原文地址:http://www.cppblog.com/chugf/archive/2011/07/05/150224.html

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;    
    }    

 

分享到:
评论

相关推荐

    一个经典的socket通信程序

    3. **客户端与服务端**:在Socket通信中,客户端通常发起连接请求,而服务端则等待并响应这些请求。客户端代码通常包含创建Socket、连接到服务器、发送数据、接收数据和关闭连接等步骤;服务端则需要监听特定端口,...

    java游戏(网络编程-服务端).zip

    6. **框架与库**:为了提高开发效率,开发者可能使用了特定的游戏开发框架,如Netty或Apache MINA,它们提供了高效的网络通信库。此外,还可能使用了第三方库,如JSON库(Gson或Jackson)进行数据交换,或者Guava等...

    Netty框架技术分享资料

    Netty框架的优势在于它可以提供高性能高可靠的数据传输处理能力,根基公开测试结果,Netty作为TCP服务端,在4核16G内存阿里云服务器的硬件环境下单节点可以做到10万+级别TCP客户端设备同时在线。 在Java开发中,...

    java开源包2

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

    java开源包1

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

    java开源包11

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

    java开源包3

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

    java开源包6

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

    java开源包5

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

    java开源包10

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

    java开源包4

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

    java开源包8

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

    java开源包7

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

    java开源包9

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

    java开源包101

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

    Java资源包01

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

Global site tag (gtag.js) - Google Analytics