您的位置:首页 > 编程语言

看CC中代码需要学习的地方

2014-01-13 11:28 141 查看
在InitInstance中加了这么一段,具体的还需要验证。
// 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
//则需要 InitCommonControlsEx()。否则,将无法创建窗口。
INITCOMMONCONTROLSEX InitCtrls;
InitCtrls.dwSize = sizeof(InitCtrls);
// 将它设置为包括所有要在应用程序中使用的
// 公共控件类。
InitCtrls.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);


使用Base64编码

int	CPacket::AddrXor(char* str, char* res ,int len)
{
int B64len = B64Decode(str, len, res, len);
for(int i=0;i<B64len;i++)
{
res[i]=res[i]^g_EncryptKeyArray[i];
}
return B64len;
}


在其通信连接处理上,使用SSL建立连接后,

QueueUserWorkItem(Thread_Communication, (LPVOID)&ssl_data, WT_EXECUTELONGFUNCTION);

而对于Thread_Communication的描述是处理TCP连接的通信线程

函数WaitToReceiveData,可以加入到工程中

/*++
功能: 设置从连接接收数据时的超时时间
返回值:
1: 接收到数据
0: 等待超时
-1: 出错
--*/
int CCommunication::WaitToReceiveData()
{
fd_set rset;
struct timeval tTimeOut;
int iResult;

FD_ZERO(&rset);
FD_SET(m_Socket, &rset);
tTimeOut.tv_sec = PROXY_RECV_SELECT_TIMEOUT;
tTimeOut.tv_usec = 0;
iResult = select(0, &rset, NULL, NULL, &tTimeOut);

if(SOCKET_ERROR == iResult)
return -1;

return (0 == iResult) ? 0 : 1;
}

其对数据的处理,在回复数据上面,可以参考一下,但考虑的是,数据已经经过了加密处理,具体传输的数据,尤其是服务器回复的数据,是不是一定要按照HTML的格式进行传递?这是不是连接无法持续的原因?具体还需要看一下客户端的设置。

不过在服务端,该代码没有直接的关闭ssl连接,在外端有一个while循环,且有QueueUserWorkItem进行处理,这点值得写代码测试一下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: