MINA服务端与C++客户端通讯(2)
来源:互联网 发布:中国新歌声2网络直播 编辑:程序博客网 时间:2024/06/05 17:27
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;
}
- MINA服务端与C++客户端通讯 2
- MINA服务端与C++客户端通讯(2)
- MINA服务端与C++客户端通讯(2)
- MINA服务端与C++客户端通讯(2)
- MINA服务端与C++客户端通讯(1)
- MINA服务端与C++客户端通讯(1)
- MINA服务端与C++客户端通讯(1)
- MINA服务端与C++客户端通讯 1
- mina服务端与c++客户端通信2
- Mina 简单案例(客户端与服务端)
- Mina学习(一):mina实现简单服务端与客户端
- 使用Mina框架开发 QQ Android 客户端(2) 客户端与服务端的通信
- android 客户端与服务端通讯
- Linux C 服务端同时与多个客户端进行通讯
- mina服务端与c++客户端通信1
- MINA客户端与服务端通信实例
- mina框架客户端与服务端+java+maven
- nio/mina(四)客户端socket与mina服务端通信
- Ubuntu 13.04 使用 goagent + chrome 体验自由网络
- easyui datagrid 日间格化(JS 日期时间本地化显示)
- C++ Primer 中文版 学习笔记(五)
- JAVA等级对比表
- 生产线上mysql占CPU过高排查实战
- MINA服务端与C++客户端通讯(2)
- S3C2440 裸机时钟RTC
- 程序员学习资料书籍
- 将Python程序打包成可执行文件或service
- MINA服务端与C++客户端通讯(1)
- 关于在虚拟机上的Ubuntu与宿主机共享问题
- 「深度神经网络」(deep neural network)具体是怎样工作的?
- MB1A、MB1B、MB1C、MB11、MIGO的区别解析
- 二叉树的非递归遍历