|
@@ -74,6 +74,11 @@ CSATClient::~CSATClient(void)
|
|
|
|
|
|
bool CSATClient::OnSend(const byte* pData, int nLen)
|
|
|
{
|
|
|
+ if (!m_bSocket) {
|
|
|
+ if (!Start())
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
CDlgProBar dlg;
|
|
|
g_pDlgProBar = &dlg;
|
|
|
DWORD dwLen = m_SocketClient.Write((const LPBYTE)pData, nLen);
|
|
@@ -233,7 +238,7 @@ void CSATClient::TaskProcess(SATProtocol::Package* pak)
|
|
|
if (pHeader->protocol == 0xAA) {
|
|
|
#ifdef _DEBUG
|
|
|
// 延长加载框显示时间;
|
|
|
- Sleep(15000);
|
|
|
+ Sleep(500);
|
|
|
#endif
|
|
|
if (g_pDlgProBar) {
|
|
|
while (!::IsWindow(g_pDlgProBar->m_hWnd));
|
|
@@ -244,13 +249,22 @@ void CSATClient::TaskProcess(SATProtocol::Package* pak)
|
|
|
switch (pHeader->cmd)
|
|
|
{
|
|
|
case SATProtocol::CMD_LOGIN:
|
|
|
+ case SATProtocol::CMD_LOGOUT:
|
|
|
{
|
|
|
SATProtocol::LoginResp* resp = (SATProtocol::LoginResp*)pak->buf;
|
|
|
- SATData::login_resp.bStatus = resp->bStatus;
|
|
|
- _stprintf_s(SATData::login_resp.szMessage, _T("%s"), resp->szMessage);
|
|
|
+ if (pHeader->cmd == SATProtocol::CMD_LOGIN)
|
|
|
+ {
|
|
|
+ SATData::logout_resp.bStatus = false;
|
|
|
+ SATData::login_resp.bStatus = resp->bStatus;
|
|
|
+ _stprintf_s(SATData::login_resp.szMessage, _T("%s"), resp->szMessage);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ SATData::login_resp.bStatus = false;
|
|
|
+ SATData::logout_resp.bStatus = resp->bStatus;
|
|
|
+ _stprintf_s(SATData::logout_resp.szMessage, _T("%s"), resp->szMessage);
|
|
|
+ }
|
|
|
}
|
|
|
- break;
|
|
|
- case SATProtocol::CMD_LOGOUT:
|
|
|
break;
|
|
|
case SATProtocol::CMD_ADD_DEVICE:
|
|
|
break;
|
|
@@ -266,7 +280,6 @@ void CSATClient::TaskProcess(SATProtocol::Package* pak)
|
|
|
|
|
|
BOOL CSATClient::Start()
|
|
|
{
|
|
|
- //std::string strAddr = "10.118.158.175";
|
|
|
std::string strAddr = "";
|
|
|
std::string strPort = "5588";
|
|
|
int nFamily = (m_nMode == AF_IPV4) ? AF_INET : AF_INET6;
|
|
@@ -278,20 +291,19 @@ BOOL CSATClient::Start()
|
|
|
m_bSocket = FALSE;
|
|
|
return FALSE;
|
|
|
}
|
|
|
- else
|
|
|
- {
|
|
|
- m_bSocket = TRUE;
|
|
|
- CSocketHandle* pSH = (CSocketHandle*)m_SocketClient;
|
|
|
|
|
|
- // 设置等待数据为0;
|
|
|
- pSH->m_nPendingSize = 0;
|
|
|
- memset(pSH->m_PendingBuffer, 0, SOCKET_BUFFSIZE);
|
|
|
+ // 成功连接服务器;
|
|
|
+ m_bSocket = TRUE;
|
|
|
+ CSocketHandle* pSH = (CSocketHandle*)m_SocketClient;
|
|
|
+
|
|
|
+ // 设置等待数据为0;
|
|
|
+ pSH->m_nPendingSize = 0;
|
|
|
+ memset(pSH->m_PendingBuffer, 0, SOCKET_BUFFSIZE);
|
|
|
+
|
|
|
+ // 设置多播;
|
|
|
+ SetupMCAST();
|
|
|
+ return TRUE;
|
|
|
|
|
|
- // 设置多播;
|
|
|
- SetupMCAST();
|
|
|
- return TRUE;
|
|
|
- }
|
|
|
- return 0;
|
|
|
}
|
|
|
|
|
|
void CSATClient::Stop()
|
|
@@ -325,11 +337,8 @@ void CSATClient::GetAddress(const SockAddrIn& addrIn, CString& rString) const
|
|
|
rString.Format(_T("%s : %d"), szIPAddr, static_cast<int>(static_cast<UINT>(ntohs(addrIn.GetPort()))));
|
|
|
}
|
|
|
|
|
|
-bool CSATClient::TCPLogin(std::string strUserName, std::string strPassword)
|
|
|
+bool CSATClient::TCPLogin(std::string strUserName, std::string strPassword, BOOL bLogin)
|
|
|
{
|
|
|
- if (!m_bSocket) Start();
|
|
|
- if (!m_bSocket) return false;
|
|
|
-
|
|
|
SATData::login_resp = {0};
|
|
|
int len = HEADER_LEN + sizeof(SATProtocol::UserInfo);
|
|
|
byte* pbuff = new byte[len];
|
|
@@ -338,7 +347,7 @@ bool CSATClient::TCPLogin(std::string strUserName, std::string strPassword)
|
|
|
|
|
|
pData->header.protocol = 0xAA;
|
|
|
pData->header.len = len;
|
|
|
- pData->header.cmd = SATProtocol::CMD_LOGIN;
|
|
|
+ pData->header.cmd = bLogin ? SATProtocol::CMD_LOGIN : SATProtocol::CMD_LOGOUT;
|
|
|
|
|
|
memcpy(pData->buf, strUserName.c_str(), strUserName.size());
|
|
|
memcpy(pData->buf + MAX_PATH, strPassword.c_str(), strPassword.size());
|
|
@@ -351,5 +360,5 @@ bool CSATClient::TCPLogin(std::string strUserName, std::string strPassword)
|
|
|
|
|
|
bool CSATClient::TCPLogout(std::string strUserName, std::string strPassword)
|
|
|
{
|
|
|
- return false;
|
|
|
+ return TCPLogin(strUserName, strPassword, FALSE);
|
|
|
}
|