|
@@ -767,11 +767,11 @@ void CSATTCPServer::_ShowMessage(const CString szFormat,...) const
|
|
|
#endif
|
|
|
}
|
|
|
|
|
|
-#define PAK_LEN sizeof(DataHeader)
|
|
|
+#define PAK_LEN sizeof(SATProtocol::DataHeader)
|
|
|
void CSATTCPServer::_RecvProcess(PER_SOCKET_CONTEXT* pSocketContext, PER_IO_CONTEXT* pIoContext)
|
|
|
{
|
|
|
// 小于包头;
|
|
|
- DataHeader* phead = NULL;
|
|
|
+ SATProtocol::DataHeader* phead = NULL;
|
|
|
if (pSocketContext->lastData.size() == 0)
|
|
|
{
|
|
|
// 不足包头;
|
|
@@ -783,13 +783,13 @@ void CSATTCPServer::_RecvProcess(PER_SOCKET_CONTEXT* pSocketContext, PER_IO_CONT
|
|
|
else
|
|
|
{
|
|
|
// 包头充足;
|
|
|
- phead = (DataHeader*)pIoContext->m_wsaBuf.buf;
|
|
|
+ phead = (SATProtocol::DataHeader*)pIoContext->m_wsaBuf.buf;
|
|
|
|
|
|
// 完整的包;
|
|
|
if (phead->len == pIoContext->m_Overlapped.InternalHigh)
|
|
|
{
|
|
|
OutputDebugString("A:完整的包;\n");
|
|
|
- _TaskProcess(pIoContext, (Package*)pIoContext->m_wsaBuf.buf);
|
|
|
+ _TaskProcess(pIoContext, (SATProtocol::Package*)pIoContext->m_wsaBuf.buf);
|
|
|
}
|
|
|
// 小包;
|
|
|
else if (phead->len > pIoContext->m_Overlapped.InternalHigh)
|
|
@@ -802,7 +802,7 @@ void CSATTCPServer::_RecvProcess(PER_SOCKET_CONTEXT* pSocketContext, PER_IO_CONT
|
|
|
{
|
|
|
OutputDebugString("A:超包;\n");
|
|
|
pSocketContext->lastData.append(pIoContext->m_wsaBuf.buf + phead->len, pIoContext->m_Overlapped.InternalHigh - phead->len);
|
|
|
- _TaskProcess(pIoContext, (Package*)pIoContext->m_wsaBuf.buf);
|
|
|
+ _TaskProcess(pIoContext, (SATProtocol::Package*)pIoContext->m_wsaBuf.buf);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -811,14 +811,14 @@ void CSATTCPServer::_RecvProcess(PER_SOCKET_CONTEXT* pSocketContext, PER_IO_CONT
|
|
|
int lastlen = pIoContext->m_Overlapped.InternalHigh;
|
|
|
if (pSocketContext->lastData.size() >= PAK_LEN)
|
|
|
{
|
|
|
- phead = (DataHeader*)pSocketContext->lastData.data();
|
|
|
+ phead = (SATProtocol::DataHeader*)pSocketContext->lastData.data();
|
|
|
if (phead->len <= pSocketContext->lastData.size() + pIoContext->m_Overlapped.InternalHigh)
|
|
|
{
|
|
|
if ( phead->len <= pSocketContext->lastData.size() )
|
|
|
{
|
|
|
OutputDebugString("C:超包;\n");
|
|
|
// 完整包;
|
|
|
- _TaskProcess(pIoContext, (Package*)pSocketContext->lastData.substr(0, phead->len).data());
|
|
|
+ _TaskProcess(pIoContext, (SATProtocol::Package*)pSocketContext->lastData.substr(0, phead->len).data());
|
|
|
|
|
|
pSocketContext->lastData = pSocketContext->lastData.substr(phead->len);
|
|
|
pSocketContext->lastData.append(pIoContext->m_wsaBuf.buf, pIoContext->m_Overlapped.InternalHigh);
|
|
@@ -829,7 +829,7 @@ void CSATTCPServer::_RecvProcess(PER_SOCKET_CONTEXT* pSocketContext, PER_IO_CONT
|
|
|
lastlen = pSocketContext->lastData.size() + pIoContext->m_Overlapped.InternalHigh - phead->len;
|
|
|
pSocketContext->lastData.append(pIoContext->m_wsaBuf.buf, pIoContext->m_Overlapped.InternalHigh - lastlen);
|
|
|
// 完整包;
|
|
|
- _TaskProcess(pIoContext, (Package*)pSocketContext->lastData.data());
|
|
|
+ _TaskProcess(pIoContext, (SATProtocol::Package*)pSocketContext->lastData.data());
|
|
|
// 剩余包;
|
|
|
pSocketContext->lastData.clear();
|
|
|
if (lastlen)
|
|
@@ -856,14 +856,14 @@ void CSATTCPServer::_RecvProcess(PER_SOCKET_CONTEXT* pSocketContext, PER_IO_CONT
|
|
|
{
|
|
|
// 拼成完整包头;
|
|
|
pSocketContext->lastData.append(pIoContext->m_wsaBuf.buf, diflen);
|
|
|
- phead = (DataHeader*)pSocketContext->lastData.data();
|
|
|
+ phead = (SATProtocol::DataHeader*)pSocketContext->lastData.data();
|
|
|
|
|
|
// 完整包;
|
|
|
if ( phead->len == PAK_LEN + pIoContext->m_Overlapped.InternalHigh - diflen )
|
|
|
{
|
|
|
OutputDebugString("B:完整包;\n");
|
|
|
pSocketContext->lastData.append(pIoContext->m_wsaBuf.buf + diflen, pIoContext->m_Overlapped.InternalHigh - diflen);
|
|
|
- _TaskProcess(pIoContext, (Package*)pSocketContext->lastData.data());
|
|
|
+ _TaskProcess(pIoContext, (SATProtocol::Package*)pSocketContext->lastData.data());
|
|
|
pSocketContext->lastData.clear();
|
|
|
}
|
|
|
// 小包;
|
|
@@ -878,7 +878,7 @@ void CSATTCPServer::_RecvProcess(PER_SOCKET_CONTEXT* pSocketContext, PER_IO_CONT
|
|
|
OutputDebugString("B:超包;\n");
|
|
|
// 组完成包;
|
|
|
pSocketContext->lastData.append(pIoContext->m_wsaBuf.buf + diflen, phead->len - PAK_LEN);
|
|
|
- _TaskProcess(pIoContext, (Package*)pSocketContext->lastData.data());
|
|
|
+ _TaskProcess(pIoContext, (SATProtocol::Package*)pSocketContext->lastData.data());
|
|
|
pSocketContext->lastData.clear();
|
|
|
int last = pIoContext->m_Overlapped.InternalHigh - diflen - phead->len + PAK_LEN;
|
|
|
if (last)
|
|
@@ -891,42 +891,53 @@ void CSATTCPServer::_RecvProcess(PER_SOCKET_CONTEXT* pSocketContext, PER_IO_CONT
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-void CSATTCPServer::_TaskProcess(PER_IO_CONTEXT* pIoContext, Package* pak)
|
|
|
+void CSATTCPServer::_TaskProcess(PER_IO_CONTEXT* pIoContext, SATProtocol::Package* pak)
|
|
|
{
|
|
|
#ifdef _DEBUG
|
|
|
- OutputDebugString("成功获取数据\n");
|
|
|
+ OutputDebugString("\n########成功获取数据########\n\n");
|
|
|
#endif
|
|
|
- DataHeader *pHeader = &pak->header;
|
|
|
+ SATProtocol::DataHeader *pHeader = &pak->header;
|
|
|
if ( !pHeader )
|
|
|
return;
|
|
|
|
|
|
if ( pHeader->protocol == 0xAA ) {
|
|
|
- if ( pHeader->cmd == CMD_LOGIN ) {// 登录;
|
|
|
- TPLogin *pLogin = (TPLogin*)pak->buf;
|
|
|
+ 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(DataHeader)+sizeof(TPResponse);
|
|
|
+ long len = sizeof(SATProtocol::DataHeader)+sizeof(SATProtocol::LoginResp);
|
|
|
byte *pbuff = new byte[len];
|
|
|
- Package *pSendPak = (Package *)pbuff;
|
|
|
+ SATProtocol::Package *pSendPak = (SATProtocol::Package *)pbuff;
|
|
|
pSendPak->header.protocol = 0xAA;
|
|
|
- pSendPak->header.cmd = CMD_LOGIN;
|
|
|
+ pSendPak->header.cmd = SATProtocol::CMD_LOGIN;
|
|
|
pSendPak->header.len = len;
|
|
|
+#if 0
|
|
|
// 复制内容到指针中;
|
|
|
memcpy(pSendPak->buf, &bRet, sizeof(bool));
|
|
|
|
|
|
- int ret = send(pIoContext->m_sockAccept, (const char*)pbuff, len, 0);
|
|
|
+ char szMessage[MAX_PATH] = {0};
|
|
|
+ _stprintf_s(szMessage, _T("登录……"));
|
|
|
+ memcpy(pSendPak->buf + sizeof(bool), szMessage, MAX_PATH);
|
|
|
+#else
|
|
|
+ SATProtocol::LoginResp *pLoginResp = (SATProtocol::LoginResp*)(pbuff+sizeof(SATProtocol::DataHeader));
|
|
|
+ pLoginResp->bStatus = bRet;
|
|
|
+ _stprintf_s(pLoginResp->szMessage, _T("登录描述……"));
|
|
|
+#endif
|
|
|
+
|
|
|
+ // 发送,无须判断是否发送成功;
|
|
|
+ send(pIoContext->m_sockAccept, (const char*)pbuff, len, 0);
|
|
|
}
|
|
|
- else if ( pHeader->cmd == CMD_LOGOUT ) {// 登出;
|
|
|
+ else if ( pHeader->cmd == SATProtocol::CMD_LOGOUT ) {// 登出;
|
|
|
|
|
|
}
|
|
|
- else if ( pHeader->cmd == CMD_ADD_DEVICE ) {// 添加设备;
|
|
|
+ else if ( pHeader->cmd == SATProtocol::CMD_ADD_DEVICE ) {// 添加设备;
|
|
|
|
|
|
}
|
|
|
- else if ( pHeader->cmd == CMD_DEL_DEVICE ) {// 删除设备;
|
|
|
+ else if ( pHeader->cmd == SATProtocol::CMD_DEL_DEVICE ) {// 删除设备;
|
|
|
|
|
|
}
|
|
|
- else if ( pHeader->cmd == CMD_QUERY_DEVICES ) {// 查询设备;
|
|
|
+ else if ( pHeader->cmd == SATProtocol::CMD_QUERY_DEVICES ) {// 查询设备;
|
|
|
|
|
|
}
|
|
|
else {// 无效指令;
|