📄 socket_udpserver.cpp
字号:
fieldstr.Replace("'","");
fieldstart=fieldend+1;
Param4 = Cmd1->CreateParameter("IpAddress",adBSTR,adParamInput,-1,fieldstr.AllocSysString() );
sqlStr="select * from computers where IpAddress='"+fieldstr+"'";
v.vt=VT_UI4;
unsigned long aaaaa=inet_addr(fieldstr.GetBuffer(0));
v.intVal=aaaaa;
v.ulVal=aaaaa;
Param22=Cmd1->CreateParameter("IpAddressNum",adInteger,adParamInput,-1,v );
fieldend=strstr(fieldstart,",");
*fieldend=0;
fieldstr.Format("%s",fieldstart);
fieldstart=fieldend+1;
Param5 = Cmd1->CreateParameter("MacAddress",adBSTR,adParamInput,-1,fieldstr.AllocSysString() );
fieldend=strstr(fieldstart,",");
*fieldend=0;
fieldstr.Format("%s",fieldstart);
fieldstart=fieldend+1;
Param6 = Cmd1->CreateParameter("OsType",adBSTR,adParamInput,-1,fieldstr.AllocSysString() );
fieldend=strstr(fieldstart,",");
*fieldend=0;
fieldstr.Format("%s",fieldstart);
fieldstart=fieldend+1;
Param7 = Cmd1->CreateParameter("ServerPack",adBSTR,adParamInput,-1,fieldstr.AllocSysString() );
fieldend=strstr(fieldstart,",");
*fieldend=0;
fieldstr.Format("%s",fieldstart);
fieldstart=fieldend+1;
Param8 = Cmd1->CreateParameter("IEVersion",adBSTR,adParamInput,-1,fieldstr.AllocSysString() );
fieldend=strstr(fieldstart,",");
*fieldend=0;
fieldstr.Format("%s",fieldstart);
fieldstart=fieldend+1;
Param9 = Cmd1->CreateParameter("Langu",adBSTR,adParamInput,-1,fieldstr.AllocSysString() );
fieldend=strstr(fieldstart,",");
*fieldend=0;
fieldstr.Format("%s",fieldstart);
fieldstart=fieldend+1;
Param10 = Cmd1->CreateParameter("CpuType",adBSTR,adParamInput,-1,fieldstr.AllocSysString() );
fieldend=strstr(fieldstart,",");
*fieldend=0;
fieldstr.Format("%s",fieldstart);
fieldstart=fieldend+1;
Param11 = Cmd1->CreateParameter("CpuFreq",adBSTR,adParamInput,-1,fieldstr.AllocSysString() );
fieldend=strstr(fieldstart,",");
*fieldend=0;
fieldstr.Format("%s",fieldstart);
fieldstart=fieldend+1;
Param12 = Cmd1->CreateParameter("Memory",adBSTR,adParamInput,-1,fieldstr.AllocSysString() );
fieldend=strstr(fieldstart,",");
*fieldend=0;
fieldstr.Format("%s",fieldstart);
fieldstart=fieldend+1;
Param13 = Cmd1->CreateParameter("DiskSize",adBSTR,adParamInput,-1,fieldstr.AllocSysString() );
fieldend=strstr(fieldstart,",");
*fieldend=0;
fieldstr.Format("%s",fieldstart);
fieldstart=fieldend+1;
Param14 = Cmd1->CreateParameter("FreeDiskSize",adBSTR,adParamInput,-1,fieldstr.AllocSysString());
fieldend=strstr(fieldstart,",");
*fieldend=0;
fieldstr.Format("%s",fieldstart);
fieldstart=fieldend+1;
Param15 = Cmd1->CreateParameter("KillVersion",adBSTR,adParamInput,-1,fieldstr.AllocSysString() );
v.vt=VT_BOOL;
v.boolVal=(int)false;
Param16 = Cmd1->CreateParameter("isInstallKill",adBoolean,adParamInput,-1,v );
v.boolVal=(int)false;
Param17 = Cmd1->CreateParameter("isRunKill",adBoolean,adParamInput,-1,v );
v.boolVal=(int)false;
Param18 = Cmd1->CreateParameter("isRunComputer",adBoolean,adParamInput,-1,v );
v.boolVal=(int)false;
Param19 = Cmd1->CreateParameter("isRegister",adBoolean,adParamInput,-1,v );
v.boolVal=(int)false;
Param20 = Cmd1->CreateParameter("Cmd_Install",adBoolean,adParamInput,-1,v );
v.boolVal=(int)false;
Param21 = Cmd1->CreateParameter("Cmd_Uninstall",adBoolean,adParamInput,-1,v );
// sqlStr="select * from computers where IpAddress=?";
Cmd2.CreateInstance( __uuidof( Command ) );
Cmd2->ActiveConnection = Sdb;
Cmd2->CommandText = sqlStr.AllocSysString();
// Cmd2->Parameters->Append(Param4);
_RecordsetPtr Recd=Cmd2->Execute(NULL, NULL, adCmdText );
int recds=Recd->GetRecordCount();
recds=Recd->adoEOF;
if(Recd->adoEOF)
{
sqlStr="insert into computers(ComputerGroupId,ComputerName,IpAddress,MacAddress,OsType,ServerPack,IEVersion,Langu,CpuType,CpuFreq,Memory,DiskSize,FreeDiskSize,KillVersion,isInstallKill,isRunKill,isRunComputer,isRegister,Cmd_Install,Cmd_Uninstall,IpAddressNum) ";
sqlStr+=" values(2,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
}
else
{
sqlStr="Update Computers set ComputerName=?,IpAddress=?,MacAddress=?,OsType=?,ServerPack=?,IEVersion=?,Langu=?,CpuType=?,CpuFreq=?,Memory=?,DiskSize=?,FreeDiskSize=?,KillVersion=?,isInstallKill=?,isRunKill=?,isRunComputer=?,isRegister=?,Cmd_Install=?,Cmd_Uninstall=? where IpAddressNum=? ";
}
Cmd1->Parameters->Append( Param3 );
Cmd1->Parameters->Append( Param4 );
Cmd1->Parameters->Append( Param5 );
Cmd1->Parameters->Append( Param6 );
Cmd1->Parameters->Append( Param7 );
Cmd1->Parameters->Append( Param8 );
Cmd1->Parameters->Append( Param9 );
Cmd1->Parameters->Append( Param10 );
Cmd1->Parameters->Append( Param11 );
Cmd1->Parameters->Append( Param12 );
Cmd1->Parameters->Append( Param13 );
Cmd1->Parameters->Append( Param14 );
Cmd1->Parameters->Append( Param15 );
Cmd1->Parameters->Append( Param16 );
Cmd1->Parameters->Append( Param17 );
Cmd1->Parameters->Append( Param18 );
Cmd1->Parameters->Append( Param19 );
Cmd1->Parameters->Append( Param20 );
Cmd1->Parameters->Append( Param21 );
Cmd1->Parameters->Append( Param22 );
//AfxMessageBox(sqlStr);
Cmd1->CommandText = sqlStr.AllocSysString();
Cmd1->Execute( NULL, NULL, adCmdText );
}
catch(...)
{
AfxMessageBox("这台计算机已经注册过了");
}
}
void CSocket_UdpServer::ComputerOnLine(_ConnectionPtr Sdb,char * buf,int buflen,long int ipnum)
{
VARIANT v;
_CommandPtr Cmd1;
_ParameterPtr Param1,Param2,Param3,Param4;
char * fieldstart, * fieldend;
CString fieldstr;
CString sqlStr,tempstr;;
// sqlStr.Format("update computers set isInstallKill=? , KillVersion=? , isRunKill= ? , isRunComputer=1 , HeartBeatTime= Time() where IpAddressNum=%d",ipnum);
tempstr="update computers set isInstallKill=? , KillVersion=? , isRunKill= ? , isRunComputer=1 , HeartBeatTime= Time() ";//where IpAddressNum=%d",ipnum);
try
{
Cmd1.CreateInstance( __uuidof( Command ) );
Cmd1->ActiveConnection = Sdb;
fieldstart=buf;
fieldend=strstr(fieldstart,",");
*fieldend=0;
v.vt=VT_BOOL;
v.boolVal=atoi(fieldstart);
Param1 = Cmd1->CreateParameter("isInstallKill",adBoolean,adParamInput,-1,v);
if(v.boolVal)
tempstr+=", Cmd_Install=0";
else
tempstr+=", Cmd_Uninstall=0";
sqlStr.Format("%s where IpAddressNum=%d",tempstr.GetBuffer(0),ipnum);
fieldstart=fieldend+1;
fieldend=strstr(fieldstart,",");
*fieldend=0;
fieldstr=fieldstart;
// sqlStr+=sqlStr;
if(fieldstr.GetLength()<1)
fieldstr=" ";
Param2 = Cmd1->CreateParameter("KillVersion",adBSTR,adParamInput,-1,fieldstr.AllocSysString());
fieldstart=fieldend+1;
*fieldend=0;
v.boolVal=atoi(fieldstart);
Param3 = Cmd1->CreateParameter("isRunKill",adBoolean,adParamInput,-1,v );
v.vt=VT_DATE;
time_t t;
v.date=time(&t);
Param4=Cmd1->CreateParameter("HeartBeatTime",adDBTimeStamp,adParamInput,-1,v );
Cmd1->Parameters->Append( Param1 );
Cmd1->Parameters->Append( Param2 );
Cmd1->Parameters->Append( Param3 );
Cmd1->CommandText = sqlStr.AllocSysString();
Cmd1->Execute( NULL, NULL, adCmdText );
HeartBeatSendData(Sdb,ipnum);
}
catch(...)
{
AfxMessageBox("更新失败");
}
}
void CSocket_UdpServer::UnInstallKill( char *IP, int port,char *url)
{
char packet[MAX_PACKET_SIZE];
int packetlen;
DataPacketHeader PacketHeader;
CString sqlStr;
try
{
CMainFrame * pMain=(CMainFrame *)AfxGetMainWnd();
PacketHeader.ComputerId=inet_addr(IP);
PacketHeader.function=7;
strcpy(PacketHeader.sysinfo,SYSTEMINFOSTR);
_RecordsetPtr m_pRecordset;
HRESULT hTRes;
sqlStr.Format("select * from computers where isInstallKill<>0 and IpAddress='%s'",IP);
// sqlStr.Format("select * from computers where isInstallKill=1 and IpAddressNum=%ld",PacketHeader.ComputerId);
hTRes = m_pRecordset.CreateInstance(_T("ADODB.Recordset"));
if (SUCCEEDED(hTRes))
{
//----------------------------------------------------
hTRes = m_pRecordset->Open(sqlStr.AllocSysString(),
_variant_t((IDispatch *)(pMain->m_SocketServer.m_db),true),
adOpenStatic,adLockOptimistic,adCmdText);
int i=m_pRecordset->GetRecordCount();
if(m_pRecordset->adoEOF)
{
m_pRecordset->Close();
return;
}
}
m_pRecordset->Close();
PacketHeader.mesagelen=pMain->m_InstallUrl.GetLength()+pMain->m_UnInstallUrl.GetLength()+3;
memset(packet,0,MAX_PACKET_SIZE);
packetlen=sizeof(PacketHeader);
memcpy(packet,&PacketHeader,packetlen);
sprintf(packet+packetlen,"%s,%s",pMain->m_InstallUrl.GetBuffer(0),pMain->m_UnInstallUrl.GetBuffer(0));
SendStr(packet,IP,port,packetlen+PacketHeader.mesagelen);
_CommandPtr Cmd1;
CString sqlstr;
Cmd1.CreateInstance( __uuidof( Command ) );
Cmd1->ActiveConnection = m_db;
sqlstr.Format("update computers set Cmd_Uninstall=1 where IpAddress='%s' ",IP);
Cmd1->CommandText=sqlstr.AllocSysString();
Cmd1->Execute( NULL, NULL, adCmdText );
}
catch(...)
{
}
}
void CSocket_UdpServer::UnInstallGroup(int GroupID, int port, char *url,int type)
{
char IP[30];
HRESULT hTRes;
_RecordsetPtr m_pGroupRecordset; //用于创建一个查询记录集
_RecordsetPtr m_pComputerRecordset; //用于创建一个查询记录集
CString strSQL,strCurItem;
if(type==1)
{
try
{
strSQL.Format("select * from ComputerGroups where ParentComputerGroupid=%d",GroupID);
hTRes = m_pGroupRecordset.CreateInstance(_T("ADODB.Recordset"));
if (SUCCEEDED(hTRes))
{
hTRes = m_pGroupRecordset->Open(strSQL.AllocSysString(),
_variant_t((IDispatch *)m_db,true),
adOpenStatic,adLockOptimistic,adCmdText);
if(SUCCEEDED(hTRes))
{
if (!(m_pGroupRecordset->adoEOF))
{
m_pGroupRecordset->MoveFirst();
while(!(m_pGroupRecordset->adoEOF))
{
UnInstallGroup(m_pGroupRecordset->GetCollect("ComputerGroupId").iVal, port, url,type);
m_pGroupRecordset->MoveNext();
}
}
}
}
}
catch(...)
{
}//end of try
}//end of if
strSQL.Format("select * FROM Computers where ComputerGroupId = %d",GroupID);
_variant_t varSQLtcp(strSQL);
CString tempstr;
try
{
hTRes = m_pComputerRecordset.CreateInstance(_T("ADODB.Recordset"));
if (SUCCEEDED(hTRes))
{
hTRes = m_pComputerRecordset->Open(varSQLtcp,
_variant_t((IDispatch *)m_db,true),
adOpenStatic,adLockOptimistic,adCmdText);
if(SUCCEEDED(hTRes))
{
if (!(m_pComputerRecordset->adoEOF))
{
m_pComputerRecordset->MoveFirst();
while(!(m_pComputerRecordset->adoEOF))
{
CString tempip;
tempip=m_pComputerRecordset->GetCollect("IpAddress").bstrVal;
strcpy(IP,tempip.GetBuffer(0));
UnInstallKill(IP,port,url);
if (!(m_pComputerRecordset->adoEOF))
m_pComputerRecordset->MoveNext();
}
}
}
}
m_pComputerRecordset->Close();
}
catch(...)
{
return;
}
}
void CSocket_UdpServer::EditComputerInfo(_ConnectionPtr Sdb,char * buf,int buflen)
{
CString sqlStr;
_CommandPtr Cmd1;
_ParameterPtr Param1,Param2,Param3,Param4,Param5,Param6,Param7,Param8,Param9,Param10,Param11,Param12,Param13,Param14,Param15,Param16,Param17,Param18,Param19,Param20,Param21,Param22;
char * fieldstart, * fieldend;
CString fieldstr;
sqlStr="Update Computers set ComputerName=?,IpAddress=?,MacAddress=?,OsType=?,ServerPack=?,IEVersion=?,Langu=?,CpuType=?,CpuFreq=?,Memory=?,DiskSize=?,FreeDiskSize=?,KillVersion=?,isInstallKill=?,isRunKill=?,isRunComputer=?,isRegister=?,Cmd_Install=?,Cmd_Uninstall=? where IpAddressNum=? ";
//sqlStr="insert into computers(ComputerName,IpAddress,MacAddress,OsType,ServerPack,IEVersion, Langu,CpuType,CpuFreq,Memory,DiskSize,FreeDiskSize,KillVersion,isInstallKill,isRunKill,isRunComputer,isRegister,Cmd_Install,Cmd_Uninstall,IpAddressNum) ";
try
{
fieldstart=buf;
fieldend=strstr(fieldstart,",");
Cmd1.CreateInstance( __uuidof( Command ) );
Cmd1->ActiveConnection = Sdb;
fieldstart=buf;
fieldstr=fieldstart;
/*
//为收到注册数据包服务的
*/
VARIANT v;
fieldend=strstr(fieldstart,",");
*fieldend=0;
fieldstr.Format("%s",fieldstart);
fieldstart=fieldend+1;
Param3 = Cmd1->CreateParameter("ComputerName",adBSTR,adParamInput,-1,fieldstr.AllocSysString() );
fieldend=strstr(fieldstart,",");
*fieldend=0;
fieldstr.Format("%s",fieldstart);
fieldstr.Replace("'","");
fieldstart=fieldend+1;
Param4 = Cmd1->CreateParameter("IpAddress",adBSTR,adParamInput,-1,fieldstr.AllocSysString() );
//ComputerName=?,IpAddress=?,MacAddress=?,OsType=?,ServerPack=?,IEVersion=?,Langu=?,CpuType=?,CpuFreq=?,Memory=?,DiskSize=?,FreeDiskSize=?,KillVersion=?,isInstallKill=?,isRunKill=?,isRunComputer=?,isRegister=?,Cmd_Install=?,Cmd_Uninstall=? where IpAddressNum=?
v.vt=VT_UI4;
v.ulVal=inet_addr(fieldstr.GetBuffer(0));
Param22=Cmd1->CreateParameter("IpAddressNum",adInteger,adParamInput,-1,v );
fieldend=strstr(fieldstart,",");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -