|
@@ -864,64 +864,58 @@ void CSATTCPServer::_TaskProcess(PER_IO_CONTEXT* pIoContext, SATProtocol::Packag
|
|
|
return;
|
|
|
|
|
|
if ( pHeader->protocol == 0xAA ) {
|
|
|
- if ( pHeader->cmd == SATProtocol::CMD_LOGIN ) {
|
|
|
- // 登录;
|
|
|
- SATProtocol::UserInfo *pLogin = (SATProtocol::UserInfo*)pak->buf;
|
|
|
- bool bRet = CSATExecutor::GetInstance()->Login(pLogin->szUserName, pLogin->szPassword);
|
|
|
-
|
|
|
- // 计算数据包长度;
|
|
|
- long len = sizeof(SATProtocol::DataHeader)+sizeof(SATProtocol::LoginResp);
|
|
|
- byte *pbuff = new byte[len];
|
|
|
- memset(pbuff, 0, len);
|
|
|
- SATProtocol::Package *pSendPak = (SATProtocol::Package *)pbuff;
|
|
|
- pSendPak->header.protocol = 0xAA;
|
|
|
- pSendPak->header.cmd = SATProtocol::CMD_LOGIN;
|
|
|
- pSendPak->header.len = len;
|
|
|
+ switch ( pHeader->cmd )
|
|
|
+ {
|
|
|
+ case SATProtocol::CMD_LOGIN:
|
|
|
+ case SATProtocol::CMD_LOGOUT:
|
|
|
+ {
|
|
|
+ // 登录;
|
|
|
+ SATProtocol::UserInfo *pLogin = (SATProtocol::UserInfo*)pak->buf;
|
|
|
+ bool bRet = CSATExecutor::GetInstance()->Login(pLogin->szUserName, pLogin->szPassword, !pHeader->cmd);
|
|
|
+
|
|
|
+ // 计算数据包长度;
|
|
|
+ long len = sizeof(SATProtocol::DataHeader)+sizeof(SATProtocol::LoginResp);
|
|
|
+ byte *pbuff = new byte[len];
|
|
|
+ memset(pbuff, 0, len);
|
|
|
+ SATProtocol::Package *pSendPak = (SATProtocol::Package *)pbuff;
|
|
|
+ pSendPak->header.protocol = 0xAA;
|
|
|
+ pSendPak->header.cmd = pHeader->cmd;
|
|
|
+ pSendPak->header.len = len;
|
|
|
#if 0
|
|
|
- // 复制内容到指针中;
|
|
|
- memcpy(pSendPak->buf, &bRet, sizeof(bool));
|
|
|
+ // 复制内容到指针中;
|
|
|
+ memcpy(pSendPak->buf, &bRet, sizeof(bool));
|
|
|
|
|
|
- char szMessage[MAX_PATH] = {0};
|
|
|
- _stprintf_s(szMessage, _T("登录……"));
|
|
|
- memcpy(pSendPak->buf + sizeof(bool), szMessage, MAX_PATH);
|
|
|
+ char szMessage[MAX_PATH] = {0};
|
|
|
+ _stprintf_s(szMessage, _T("登录……"));
|
|
|
+ memcpy(pSendPak->buf + sizeof(bool), szMessage, MAX_PATH);
|
|
|
#else
|
|
|
- const SATParameters::STLoginResp *pstLoginResp = CSATExecutor::GetInstance()->GetLoginResp();
|
|
|
- SATProtocol::LoginResp *pLoginResp = (SATProtocol::LoginResp*)(pbuff+sizeof(SATProtocol::DataHeader));
|
|
|
- pLoginResp->bStatus = bRet;
|
|
|
- memset(pLoginResp->szMessage, 0, MAX_PATH);
|
|
|
- //_stprintf_s(pLoginResp->szMessage, _T("%s"), pstLoginResp->strMessage.c_str());
|
|
|
- //_tcscpy_s(pLoginResp->szMessage, _T("登录描述……"));
|
|
|
- // 如果使用上方两种方式赋值,会导致'\0'后面的字节不为0;
|
|
|
- memcpy(pLoginResp->szMessage, pstLoginResp->strMessage.c_str(), pstLoginResp->strMessage.size());
|
|
|
+ const SATParameters::STLoginResp *pstLoginResp = CSATExecutor::GetInstance()->GetLoginResp();
|
|
|
+ SATProtocol::LoginResp *pLoginResp = (SATProtocol::LoginResp*)(pbuff+sizeof(SATProtocol::DataHeader));
|
|
|
+ pLoginResp->bStatus = bRet;
|
|
|
+ memset(pLoginResp->szMessage, 0, MAX_PATH);
|
|
|
+ //_stprintf_s(pLoginResp->szMessage, _T("%s"), pstLoginResp->strMessage.c_str());
|
|
|
+ //_tcscpy_s(pLoginResp->szMessage, _T("登录描述……"));
|
|
|
+ // 如果使用上方两种方式赋值,会导致'\0'后面的字节不为0;
|
|
|
+ memcpy(pLoginResp->szMessage, pstLoginResp->strMessage.c_str(), pstLoginResp->strMessage.size());
|
|
|
#endif
|
|
|
+ // 发送,无须判断是否发送成功;
|
|
|
+ send(pIoContext->m_sockAccept, (const char*)pbuff, len, 0);
|
|
|
|
|
|
- // 发送,无须判断是否发送成功;
|
|
|
- send(pIoContext->m_sockAccept, (const char*)pbuff, len, 0);
|
|
|
-
|
|
|
- // 释放内存;
|
|
|
- delete []pbuff;
|
|
|
- pbuff = NULL;
|
|
|
- }
|
|
|
- else if ( pHeader->cmd == SATProtocol::CMD_LOGOUT ) {// 登出;
|
|
|
-
|
|
|
- }
|
|
|
- else if ( pHeader->cmd == SATProtocol::CMD_ADD_DEVICE ) {// 添加设备;
|
|
|
-
|
|
|
- }
|
|
|
- else if ( pHeader->cmd == SATProtocol::CMD_DEL_DEVICE ) {// 删除设备;
|
|
|
-
|
|
|
- }
|
|
|
- else if ( pHeader->cmd == SATProtocol::CMD_QUERY_DEVICES ) {// 查询设备;
|
|
|
-
|
|
|
- }
|
|
|
- else {// 无效指令;
|
|
|
-
|
|
|
+ // 释放内存;
|
|
|
+ delete []pbuff;
|
|
|
+ pbuff = NULL;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case SATProtocol::CMD_ADD_DEVICE:
|
|
|
+ break;
|
|
|
+ case SATProtocol::CMD_DEL_DEVICE:
|
|
|
+ break;
|
|
|
+ case SATProtocol::CMD_QUERY_DEVICES:
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
- else if ( pHeader->protocol == 0xAB )
|
|
|
- {
|
|
|
-
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
bool CSATTCPServer::CheckDataHeader(SATProtocol::DataHeader* header)
|