📄 recvdata.cpp
字号:
// RecvData.cpp : implementation file
//
#include "stdafx.h"
#include "GateAgent.h"
#include "RecvData.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern int g_nMax;
#define PACKLEN 8
#define TELLEN 13
/////////////////////////////////////////////////////////////////////////////
// CRecvData
IMPLEMENT_DYNCREATE(CRecvData, CWinThread)
CRecvData::CRecvData()
{
}
CRecvData::~CRecvData()
{
m_pDlg->OnInsertMess("线程退出",true,true);
if (g_nMax>0)
{
g_nMax=g_nMax-1;
}
}
BOOL CRecvData::InitInstance()
{
// TODO: perform and per-thread initialization here
return TRUE;
}
int CRecvData::ExitInstance()
{
// TODO: perform any per-thread cleanup here
return CWinThread::ExitInstance();
}
BEGIN_MESSAGE_MAP(CRecvData, CWinThread)
//{{AFX_MSG_MAP(CRecvData)
// NOTE - the ClassWizard will add and remove mapping macros here.
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CRecvData message handlers
int CRecvData::Run()
{
char m_pRecvBuf[1000]={0}; // 接收数据缓冲区
char m_nTmp[200]={0};
memset(m_pRecvBuf, 0, sizeof(m_pRecvBuf));
int iRecvBytes = 0;
int iRet1 =CheckSocketReadable(m_ClientSocket,5,0);
if(iRet1<0)
{
m_pDlg->OnInsertMess("套接字不可读",true,true);
return -1;
}
memset(m_pRecvBuf,0x00,sizeof(m_pRecvBuf));
iRecvBytes = recv(m_ClientSocket, m_pRecvBuf, sizeof(m_pRecvBuf), 0);
if (iRecvBytes <= 0)
{
sprintf(m_nTmp, "客户端[IP:%s ]退出连接", m_nClientIP);
m_pDlg->OnInsertMess(m_nTmp,true,true);
closesocket(m_ClientSocket);
return -1;
}
char chTel[TELLEN]={0};
char chText[300]={0};
CString strText;
memcpy(chTel,m_pRecvBuf+PACKLEN,TELLEN);//复制手机号码
chTel[TELLEN-1]='\0';
memcpy(chText,m_pRecvBuf+PACKLEN+TELLEN,300);//复制text
chText[300-1]='\0';
strText.Format("%s",chText);
strText.TrimRight();
SYSTEMTIME tm;
char chTime[14]={0};
//设置写环境
GetLocalTime(&tm);
sprintf(chTime,"%04d%02d%02d%02d%02d%02d",tm.wYear, tm.wMonth, tm.wDay,tm.wHour,tm.wMinute,tm.wSecond);
CString strMessage;
OnDoWith(0,chTel,chTime,strText.GetBuffer(0),0);
int tt=OnSend();
if (tt==44 || tt==55)
{
m_pDlg->OnSend(m_ClientSocket, "m_pRecvBuf","no send","0",7);
}
closesocket(m_ClientSocket);
return 0;
// return CWinThread::Run();
}
int CRecvData::OnDoWith(int nHandle,char *pchTelNum,char *pchTime,char *pchText,char *pchFlag)
{
return m_pDlg->OnDoWith(nHandle,pchTelNum,pchTime,pchText,pchFlag);
}
int CRecvData::CheckSocketReadable(int socket, unsigned long delaySec, unsigned long delayUsec)
{
fd_set fdset;
struct timeval tv;
tv.tv_sec=delaySec;
tv.tv_usec=delayUsec;
FD_ZERO(&fdset);
FD_SET(socket,&fdset);
if (delaySec == 0 && delayUsec == 0)
return select(socket+1,&fdset,NULL,NULL,NULL);
else
return select(socket+1,&fdset,NULL,NULL,&tv);
}
int CRecvData::OnSend()
{
return m_pDlg->OnPreSend(m_iSendNum,m_ClientSocket,0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -