分享

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

 instl 2014-09-20
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;  
}  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多