MINA服务端与C++客户端通讯(2)
2011-07-07 13:53
267 查看
from:http://www.cppblog.com/chugf/archive/2011/07/05/150224.aspx
Java与C++通讯还有编码转码的问题存在,假设通讯编码采用UTF-8
C++客户端发送时需要转码成UTF-8编码,接收服务端应答消息后再转回Unicode或者GBK编码
下面给出完成的C++客户端通讯示例:
CXSocket类下载地址:http://code.google.com/p/x-net/MINA服务端Demo下载地址:http://download.csdn.net/source/3418326
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.csdn.net/source/3418326
相关文章推荐
- MINA服务端与C++客户端通讯(1)
- MINA服务端与C++客户端通讯 2
- MINA服务端与C++客户端通讯(2)
- MINA服务端与C++客户端通讯(1)
- MINA服务端与C++客户端通讯(1)
- MINA服务端与C++客户端通讯(2)
- MINA服务端与C++客户端通讯(2)
- MINA服务端与C++客户端通讯(1)
- MINA服务端与C++客户端通讯 1
- C++ socket编程 实现服务端与客户端的通讯
- mina服务端与c++客户端通信1
- mina服务端与c++客户端通信2
- C++网络(三)用Socket API建立简易TCP服务端、客户端
- 以Android端为客户端,servlet端为服务端的实时通讯——基础
- Boost.Asio C++ 网络编程之五:TCP回显客户端/服务端
- Netty实现服务端客户端长连接通讯及心跳检测
- 两个APP之间的通讯(客户端调用服务端里的音乐播放)
- mina心跳包:客户端发送心跳包,服务端响应心跳包
- thrift配置——windows客户端与linux服务端通信(C++)
- Android使用webView和ServerSocket模拟客户端和服务端通讯