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

📄 adm.cc

📁 此源代码只用于学习,不得用于其他商业活动 .
💻 CC
📖 第 1 页 / 共 4 页
字号:
			gv_DiskInfo[lv_iCurrentDisk].AvailSize = atol(Buffer);
		}
	}
}
/****************************************************************
**
**	Function: StartOne
**	Purpose:  启动一个进程
** 	Input Parammeters:
		Type -- 进程所属类型
**	Return:
**	datetime:
**
*****************************************************************/
void StartOne(const char *Type)
{
	C_BaseSock Socket;
	struct sockaddr_in Address;

	char CommandLine[STRING_LEN];
	char SendBuffer[STRING_LEN],RecvBuffer[STRING_LEN];
	int lv_iCurrentHost,lv_iCurrentProc,Lv_iCurrentRow;

	for(lv_iCurrentProc = 1,Lv_iCurrentRow = 0;lv_iCurrentProc <= gv_iProcCount;lv_iCurrentProc++)
	{
		if (strcmp(gv_ProcInfo[lv_iCurrentProc].Type,Type) != 0)
		{
			continue;
		}
		Lv_iCurrentRow ++;

		if (Lv_iCurrentRow == gv_iSelectedRow)
		{
			break;
		}
	}
	if (Lv_iCurrentRow = gv_iSelectedRow)
	{
		sprintf(CommandLine,"Command@Start@%d",gv_ProcInfo[lv_iCurrentProc].Index);
		lv_iCurrentHost = gv_ProcInfo[lv_iCurrentProc].SocketId;
		if (gv_HostInfo[lv_iCurrentHost].HostSocket <= 0)
		{
			gv_HostInfo[lv_iCurrentHost].HostSocket = Socket.Socket(AF_INET,SOCK_STREAM,0);

			memset(&Address,0,sizeof(Address));
			Address.sin_family = AF_INET;
			Address.sin_port = htons(gv_HostInfo[lv_iCurrentHost].HostPort);
			Address.sin_addr.s_addr = inet_addr(gv_HostInfo[lv_iCurrentHost].HostIP);
			if (Socket.Connect(gv_HostInfo[lv_iCurrentHost].HostSocket,(struct sockaddr *)(void *)&Address,sizeof(Address)) < 0)
			{
				Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
				gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
				return;
			}
			strcpy(SendBuffer,"Linkage Billing User");
			RecvBuffer[0] = 0;
			if(Socket.WriteLine(gv_HostInfo[lv_iCurrentHost].HostSocket,SendBuffer,sizeof(SendBuffer))<=0)
			{
				Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
				gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
				return;
			}
			if(Socket.ReadLine(gv_HostInfo[lv_iCurrentHost].HostSocket,RecvBuffer,sizeof(RecvBuffer))<=0)
			{
				Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
				gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
				return;
			}
			if (strcmp(RecvBuffer,"Yes") != 0)
			{
				Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
				gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
				return;
			}
		}
		if (Socket.WriteLine(gv_HostInfo[lv_iCurrentHost].HostSocket,CommandLine,sizeof(CommandLine)) <= 0)
		{
			Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
			gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
			return;
		}
	}
}
/****************************************************************
**
**	Function: StartAll
**	Purpose:  启动全部进程
** 	Input Parammeters:
		Type -- 进程所属类型
**	Return:
**	datetime:
**
*****************************************************************/
void StartAll(const char *Type)
{
	C_BaseSock Socket;
	struct sockaddr_in Address;

	char CommandLine[STRING_LEN];
	char Buffer[STRING_LEN];
	char SendBuffer[STRING_LEN],RecvBuffer[STRING_LEN];
	int lv_iCurrentHost,lv_iCurrentProc;

	for(lv_iCurrentHost = 1;lv_iCurrentHost <= gv_iHostCount;lv_iCurrentHost++)
	{
		strcpy(CommandLine,"Command@Start");
		for(lv_iCurrentProc = 1;lv_iCurrentProc <= gv_iProcCount;lv_iCurrentProc++)
		{
			if (strcmp(gv_ProcInfo[lv_iCurrentProc].Type,Type) != 0)
			{
				continue;
			}
			if (gv_ProcInfo[lv_iCurrentProc].SocketId != lv_iCurrentHost)
			{
				continue;
			}
			strcpy(Buffer,CommandLine);
			sprintf(CommandLine,"%s@%d",Buffer,gv_ProcInfo[lv_iCurrentProc].Index);
		}
		if (strcmp(CommandLine,"Command@Start") == 0)
		{
			continue;
		}
		if (gv_HostInfo[lv_iCurrentHost].HostSocket <= 0)
		{
			gv_HostInfo[lv_iCurrentHost].HostSocket = Socket.Socket(AF_INET,SOCK_STREAM,0);

			memset(&Address,0,sizeof(Address));
			Address.sin_family = AF_INET;
			Address.sin_port = htons(gv_HostInfo[lv_iCurrentHost].HostPort);
			Address.sin_addr.s_addr = inet_addr(gv_HostInfo[lv_iCurrentHost].HostIP);
			if (Socket.Connect(gv_HostInfo[lv_iCurrentHost].HostSocket,(struct sockaddr *)(void *)&Address,sizeof(Address)) < 0)
			{
				Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
				gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
				continue;
			}
			strcpy(SendBuffer,"Linkage Billing User");
			RecvBuffer[0] = 0;
			if(Socket.WriteLine(gv_HostInfo[lv_iCurrentHost].HostSocket,SendBuffer,sizeof(SendBuffer))<=0)
			{
				Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
				gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
				continue;
			}
			if(Socket.ReadLine(gv_HostInfo[lv_iCurrentHost].HostSocket,RecvBuffer,sizeof(RecvBuffer))<=0)
			{
				Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
				gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
				continue;
			}
			if (strcmp(RecvBuffer,"Yes") != 0)
			{
				Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
				gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
				continue;
			}
		}
		if (Socket.WriteLine(gv_HostInfo[lv_iCurrentHost].HostSocket,CommandLine,sizeof(CommandLine)) <= 0)
		{
			Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
			gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
			continue;
		}
	}
}
/****************************************************************
**
**	Function: StopOne
**	Purpose:  停止一个进程
** 	Input Parammeters:
		Type -- 进程所属类型
**	Return:
**	datetime:
**
*****************************************************************/
void StopOne(const char *Type)
{
	C_BaseSock Socket;
	struct sockaddr_in Address;

	char CommandLine[STRING_LEN];
	char SendBuffer[STRING_LEN],RecvBuffer[STRING_LEN];
	int lv_iCurrentHost,lv_iCurrentProc,Lv_iCurrentRow;

	for(lv_iCurrentProc = 1,Lv_iCurrentRow = 0;lv_iCurrentProc <= gv_iProcCount;lv_iCurrentProc++)
	{
		if (strcmp(gv_ProcInfo[lv_iCurrentProc].Type,Type) != 0)
		{
			continue;
		}
		Lv_iCurrentRow ++;

		if (Lv_iCurrentRow == gv_iSelectedRow)
		{
			break;
		}
	}
	if (Lv_iCurrentRow = gv_iSelectedRow)
	{
		sprintf(CommandLine,"Command@Stop@%d",gv_ProcInfo[lv_iCurrentProc].Index);
		lv_iCurrentHost = gv_ProcInfo[lv_iCurrentProc].SocketId;
		if (gv_HostInfo[lv_iCurrentHost].HostSocket <= 0)
		{
			gv_HostInfo[lv_iCurrentHost].HostSocket = Socket.Socket(AF_INET,SOCK_STREAM,0);

			memset(&Address,0,sizeof(Address));
			Address.sin_family = AF_INET;
			Address.sin_port = htons(gv_HostInfo[lv_iCurrentHost].HostPort);
			Address.sin_addr.s_addr = inet_addr(gv_HostInfo[lv_iCurrentHost].HostIP);
			if (Socket.Connect(gv_HostInfo[lv_iCurrentHost].HostSocket,(struct sockaddr *)(void *)&Address,sizeof(Address)) < 0)
			{
				Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
				gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
				return;
			}
			strcpy(SendBuffer,"Linkage Billing User");
			RecvBuffer[0] = 0;
			if(Socket.WriteLine(gv_HostInfo[lv_iCurrentHost].HostSocket,SendBuffer,sizeof(SendBuffer))<=0)
			{
				Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
				gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
				return;
			}
			if(Socket.ReadLine(gv_HostInfo[lv_iCurrentHost].HostSocket,RecvBuffer,sizeof(RecvBuffer))<=0)
			{
				Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
				gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
				return;
			}
			if (strcmp(RecvBuffer,"Yes") != 0)
			{
				Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
				gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
				return;
			}
		}
		if (Socket.WriteLine(gv_HostInfo[lv_iCurrentHost].HostSocket,CommandLine,sizeof(CommandLine)) <= 0)
		{
			Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
			gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
			return;
		}
	}
}
/****************************************************************
**
**	Function: StopAll
**	Purpose:  停止全部进程
** 	Input Parammeters:
		Type -- 进程所属类型
**	Return:
**	datetime:
**
*****************************************************************/
void StopAll(const char *Type)
{
	C_BaseSock Socket;
	struct sockaddr_in Address;

	char CommandLine[STRING_LEN];
	char Buffer[STRING_LEN];
	char SendBuffer[STRING_LEN],RecvBuffer[STRING_LEN];
	int lv_iCurrentHost,lv_iCurrentProc;

	for(lv_iCurrentHost = 1;lv_iCurrentHost <= gv_iHostCount;lv_iCurrentHost++)
	{
		strcpy(CommandLine,"Command@Stop");
		for(lv_iCurrentProc = 1;lv_iCurrentProc <= gv_iProcCount;lv_iCurrentProc++)
		{
			if (strcmp(gv_ProcInfo[lv_iCurrentProc].Type,Type) != 0)
			{
				continue;
			}
			if (gv_ProcInfo[lv_iCurrentProc].SocketId != lv_iCurrentHost)
			{
				continue;
			}
			strcpy(Buffer,CommandLine);
			sprintf(CommandLine,"%s@%d",Buffer,gv_ProcInfo[lv_iCurrentProc].Index);
		}
		if (strcmp(CommandLine,"Command@Stop") == 0)
		{
			continue;
		}
		if (gv_HostInfo[lv_iCurrentHost].HostSocket <= 0)
		{
			gv_HostInfo[lv_iCurrentHost].HostSocket = Socket.Socket(AF_INET,SOCK_STREAM,0);

			memset(&Address,0,sizeof(Address));
			Address.sin_family = AF_INET;
			Address.sin_port = htons(gv_HostInfo[lv_iCurrentHost].HostPort);
			Address.sin_addr.s_addr = inet_addr(gv_HostInfo[lv_iCurrentHost].HostIP);
			if (Socket.Connect(gv_HostInfo[lv_iCurrentHost].HostSocket,(struct sockaddr *)(void *)&Address,sizeof(Address)) < 0)
			{
				Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
				gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
				continue;
			}
			strcpy(SendBuffer,"Linkage Billing User");
			RecvBuffer[0] = 0;
			if(Socket.WriteLine(gv_HostInfo[lv_iCurrentHost].HostSocket,SendBuffer,sizeof(SendBuffer))<=0)
			{
				Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
				gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
				continue;
			}
			if(Socket.ReadLine(gv_HostInfo[lv_iCurrentHost].HostSocket,RecvBuffer,sizeof(RecvBuffer))<=0)
			{
				Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
				gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
				continue;
			}
			if (strcmp(RecvBuffer,"Yes") != 0)
			{
				Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
				gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
				continue;
			}
		}
		if (Socket.WriteLine(gv_HostInfo[lv_iCurrentHost].HostSocket,CommandLine,sizeof(CommandLine)) <= 0)
		{
			Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
			gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
			continue;
		}
	}
}
/****************************************************************
**
**	Function: AdminProc
**	Purpose:  进程操作
** 	Input Parammeters:
		Type -- 进程所属类型
**	Return:
**	datetime:
**
*****************************************************************/
void AdminProc(const char *Type)
{
	int Key;
	C_BaseSock Socket;

	for(;;)
	{
		RebuildProc(Type);
		g_Type = (char *)Type;
		signal(SIGALRM, ProcTimeBreak);
		alarm(INTERVAL);
		Key = getch();
		alarm(0);
		if (Key == 27)
		{
			for(int i = 1;i <= gv_iHostCount;i++)
			{
				if (gv_HostInfo[i].HostSocket > 0)
				{
					Socket.Close(gv_HostInfo[i].HostSocket);
					gv_HostInfo[i].HostSocket = 0;
				}
			}
			break;
		}
		switch(Key)
		{
			case KEY_UP:
				gv_iSelectedRow--;
				break;
			case KEY_DOWN:
				gv_iSelectedRow++;
				break;
			case KEY_LEFT:
				gv_iStartRow -= 13;
				gv_iSelectedRow -= 13;
				break;
			case KEY_RIGHT:
				gv_iStartRow += 13;
				gv_iSelectedRow += 13;
				break;
			case 'R' :
			case 'r' :
				StartOne(Type);
				break;
			case 'X' :
			case 'x' :
				StopOne(Type);
				break;
			case 'A' :
			case 'a' :
				StartAll(Type);
				break;
			case 'S' :
			case 's' :
				StopAll(Type);
				break;
			default	:
				break;
		}
	}
}
/****************************************************************
**
**	Function: AdminDisk
**	Purpose:  磁盘操作
** 	Input Parammeters:
		Type -- 磁盘所属类型
**	Return:
**	datetime:
**
*****************************************************************/
void AdminDisk(const char *Type)
{
	int Key;
	C_BaseSock Socket;

	for(;;)
	{
		RebuildDisk(Type);
		g_Type = (char *)Type;
		signal(SIGALRM,DiskTimeBreak);
		alarm(INTERVAL);
		Key = getch();
		alarm(0);
		if (Key == 27)
		{
			for(int i = 1;i <= gv_iHostCount;i++)
			{
				if (gv_HostInfo[i].HostSocket > 0)
				{
					Socket.Close(gv_HostInfo[i].HostSocket);
					gv_HostInfo[i].HostSocket = 0;
				}
			}
			break;
		}
		switch(Key)
		{
			case -1:
				LoadDiskData(Type);
				break;
			case KEY_UP:
				gv_iSelectedRow--;
				break;
			case KEY_DOWN:
				gv_iSelectedRow++;
				break;
			case KEY_LEFT:
				gv_iStartRow -= 13;
				gv_iSelectedRow -= 13;
				break;
			case KEY_RIGHT:
				gv_iSelectedRow += 13;
				gv_iSelectedRow += 13;
				break;
			default	:
				break;
		}
	}
	return;
}

//-------------------------------------The End------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -