⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 socket_udpserver.cpp

📁 用数据库控制树型控件现实内容的例子
💻 CPP
📖 第 1 页 / 共 3 页
字号:
				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 + -