📄 linksocket.cpp
字号:
// LinkSocket.cpp : implementation file
//
#include "stdafx.h"
#include "MTTest.h"
#include "LinkSocket.h"
#include "MTTestDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CLinkSocket
CLinkSocket::CLinkSocket()
{
}
CLinkSocket::~CLinkSocket()
{
}
// Do not edit the following lines, which are needed by ClassWizard.
#if 0
BEGIN_MESSAGE_MAP(CLinkSocket, CSocket)
//{{AFX_MSG_MAP(CLinkSocket)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
#endif // 0
/////////////////////////////////////////////////////////////////////////////
// CLinkSocket member functions
//当SOCKET接收到信息时触发此函数
void CLinkSocket::OnReceive(int nErrorCode)
{
// TODO: Add your specialized code here and/or call the base class
//获取接收到的信息
char buf[10240];
int nRecv;
nRecv = this->Receive(buf, 10240);
if(nRecv < 0)
{
return;
}
//将信息放入字符串中
buf[nRecv] = 0;
CString strRecv;
strRecv = buf;
//分析数据
CString strSvrId;
if(getXMLTagValue(strRecv, "Service_id", strSvrId) <=0)
{
if(getXMLTagPropValue(strRecv, "MT_DATA_REPLY_INFO", "Msg_id", strSvrId) >= 0)
{
CString strTemp;
if(strRecv.Find("</MT_DATA_REPLY_INFO>") <= 0)
{
Sleep(1000);
nRecv = this->Receive(buf, 10240);
buf[nRecv] = 0;
strTemp = buf;
strRecv += strTemp;
}
m_pOwner->RecvSynDataReply(strRecv);
}
return;
}
if(strSvrId == "102")
{
//返回的是登录应答信息
CString strFlag;
CString strError;
if(getXMLTagValue(strRecv, "Rep_flag", strFlag) <= 0)
{
return;
}
if(strFlag == "0")
{
m_pOwner->m_bLogon = TRUE;
AfxMessageBox("Logon OK!");
}
else
{
m_pOwner->m_bLogon = FALSE;
getXMLTagValue(strRecv, "Error_desc", strError);
AfxMessageBox(strError);
}
}
else if(strSvrId == "104")
{
//心跳回应
//AfxMessageBox("心跳应答!");
}
else if(strSvrId == "301")
{
//返回的是车辆位置信息
m_pOwner->RecvGpsData(strRecv);
}
CSocket::OnReceive(nErrorCode);
}
void CLinkSocket::SetOwner(CMTTestDlg *pOwner)
{
m_pOwner = pOwner;
return;
}
//连接关闭时的处理
void CLinkSocket::OnClose(int nErrorCode)
{
// TODO: Add your specialized code here and/or call the base class
m_pOwner->m_bLinked = FALSE;
m_pOwner->m_bLogon = FALSE;
CSocket::OnClose(nErrorCode);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -