📄 callbackfun.cpp
字号:
#include "stdafx.h"
//服务器回调函数
void RmtCallBack(CRemoteHelper* pHelper,SOCKET sock)
{
char szBuf[400]={0};
CString szU,szP;
//int iInput = pHelper->GetUsernameAndPwd(szU,szP,30,FALSE,TRUE);//身份验证
//比较 szU,szP 确定身份
while(1)
{
char szOut[200]={0};
if(!pHelper->IsGoon())
{//检查退出标记
sprintf(szOut,"远程监控{%d} IsGoon = FALSE,退出服务线程",pHelper->GetSeqID());
//利用输出对象向主控台进行输出,同时将信息添加到其他监控客户端
pHelper->GetRemoteMonitorManager()->OutputToMainConsole(COutputDisplay::GeneralWarn,szOut,TRUE,FALSE);
break; //退出
}
if(!pHelper->SendBufMsgToClient())
{//将信息发送到客户端
printf(szOut,"远程监控{%d} 发送错误,退出服务线程",pHelper->GetSeqID());
//利用输出对象向主控台进行输出,同时将信息添加到其他监控客户端
pHelper->GetRemoteMonitorManager()->OutputToMainConsole(COutputDisplay::GeneralError,szOut,TRUE,FALSE);
break;
}
//利用 CRemoteHelper 提供的网络读功能,通过Helper对象的缓冲区接收数据
int iRet,iErrorCode;
//读入数据到缓冲区
iRet = pHelper->ReadDataFromClient(4,iErrorCode,TRUE);
if(iRet >0)
{
//取出一行数据
iRet = pHelper->RemoveLineFromBuffer(szBuf,400,FALSE);
if(iRet >0)//数据过长,则直接删除所有数据
{//接收连接端输入,并且在所有的屏幕上进行显示
pHelper->ClearBuffer();
sprintf(szOut,"远程监控{%d} 缓冲区内数据过多,直接清除",pHelper->GetSeqID());
pHelper->GetRemoteMonitorManager()->OutputToMainConsole(szOut,FALSE,FALSE);
}
else if(iRet==0)
{//在主屏幕上进行显示
if(strcmp("help",szBuf) == 0)
{//help command
pHelper->GetRemoteHandlerData()->PushMsg("help : 帮助命令\n\r");
pHelper->GetRemoteHandlerData()->PushMsg("exit : 退出监控\n\r");
}
if(strcmp("exit",szBuf)==0)
{//exit command
break;
}
else
{
pHelper->GetRemoteHandlerData()->PushMsg("命令错误\n\r");
}
}
}
else if(iRet ==-1 && iErrorCode == -1)
{//执行 ReadDataFromClient 发现网络错误
sprintf(szOut,"远程监控{%d} 接收失败【网络错误】,准备退出服务线程",pHelper->GetSeqID());
//利用输出对象向主控台进行输出,同时将信息添加到其他监控客户端
pHelper->GetRemoteMonitorManager()->OutputToMainConsole(COutputDisplay::GeneralWarn,szOut,TRUE,FALSE);
break;
}
else if(iRet ==-1 && iErrorCode == -2)
{/*处理无数据读入的情况*/}
}
}
void TCPSocketServerCallBack(CServerStatus* pSS,CSocketChildThread* pChild)
{
BYTE bData[100];
char szTemp[200];
int iRead;
while(1)
{//10 秒超时
int iRet = pChild->m_sockComm.TestAndRecv(10,100,bData,iRead);
if(iRet ==SP_ERR_SUCCESS || iRet ==SP_ERR_NOT_FINISH)
{//有数据到达
sprintf(szTemp,"TCPSocket客户端{%d} Recved %d",pChild->m_iSerial,iRead);
pChild->m_pStore->GetDisplay()->PutLine(COutputDisplay::Message,szTemp);
int iWrote=0;
pChild->m_sockComm.Send(iRead,bData,iWrote);
}
else
{//网络故障,或者超时
sprintf(szTemp,"TCPSocket客户端{%d} 网络故障,或者超时",pChild->m_iSerial);
pChild->m_pStore->GetDisplay()->PutLine(COutputDisplay::GeneralError,szTemp);
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -