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

📄 remoteadmin.cpp

📁 SMS gateway. SMS protocol for CHINA mobile, unicom, lingtong. Using mysql to exchange message.
💻 CPP
字号:
/**********************************************************************  FileName            : RemoteAdmin.cpp  Description         : 远程管理(客户端通信)程序  Version             : 1.0  Date                : 2003年8月4日  Author              : 刘荣辉  Other               : ***********************************************************************///g++ -Wno-deprecated -o admin RemoteAdmin.cpp socket.cpp -I../include#include <stdio.h>#include <iostream.h>#include <sys/socket.h>#include <netinet/in.h>#include "socket.h"#define ServerIP "61.145.116.115"#define AdminPort 9999int main(){	TCPsocket AdminSock;	char Command[256];	char Message[1024];	//int  MessageLen;	int  RetCode;		//建立连接	RetCode = AdminSock.Make_Connect_Sock(ServerIP, AdminPort);	if(RetCode<=0)	{		printf("Error: Cann't Connect to %s:%d.\n",ServerIP,AdminPort);		exit(1);	}	//接收连接信息	RetCode=read(AdminSock.sock, Message ,sizeof(Message));	if(RetCode<=0)	{		AdminSock.Close_sock();		printf("Error[%d]: Connection lost When reading on AdminSock.sock.\n",RetCode);		exit(1);	}	printf("%s\n",Message);	int Login=0;    for(int i=0;i<3;i++)	{		printf("------------------------------\nInput >: ");		memset(Command,0,sizeof(Command));		cin.getline(Command,sizeof(Command));	//接收键盘输入的登录验证信息		RetCode=AdminSock.Writen(Command,strlen(Command));	//发送登录信息		if(RetCode<=0)		{			AdminSock.Close_sock();			printf("Error[%d]: Connection lost When writing on AdminSock.sock.\n",RetCode);			exit(1);		}		memset(Message,0,sizeof(Message));		RetCode=read(AdminSock.sock, Message ,sizeof(Message));	//接收登录结果信息		if(RetCode<=0)		{			AdminSock.Close_sock();			printf("Error[%d]: Connection lost When reading on AdminSock.sock.\n",RetCode);			exit(1);		}		printf("%s\n",Message);		if(strncmp(Message,"Logined successfully!",21)==0)	//没有收到正确的登录信息		{			Login=1;			break;		}	}	if(!Login) exit(1);	//=====================================	while(1)	{		printf("------------------------------\nInput >: ");		memset(Command,0,sizeof(Command));		cin.getline(Command,sizeof(Command));	//接收键盘输入的命令字		if(strcmp(Command,"quit")==0)		{			AdminSock.Close_sock();			exit(0);		}		RetCode=AdminSock.Writen(Command,strlen(Command));	//发送命令字		if(RetCode<=0)		{			AdminSock.Close_sock();			printf("Error[%d]: Connection lost When writing on AdminSock.sock.\n",RetCode);			exit(1);		}		if(strcmp(Command,"STOP")==0)		{			AdminSock.Close_sock();			exit(0);		}		memset(Message,0,sizeof(Message));		RetCode=read(AdminSock.sock, Message ,sizeof(Message));	//接收命令执行结果信息		if(RetCode<=0)		{			AdminSock.Close_sock();			printf("Error[%d]: Connection lost When reading on AdminSock.sock.\n",RetCode);			exit(1);		}		printf("------------------------------\n%s\n",Message);	}	return 0;}/**********************************************************************  FileName            :   Description         : 远程管理(服务器端通信)程序  Version             : 1.0  Date                : 2003年8月4日  Author              : 刘荣辉  Other               : **********************************************************************//===============================================void * CWorker::SysAdmin(void* theGlobal){	TCPsocket AdminSock;	char ServerIP[16], AdminUser[50];	int AdminPort;	char Command[256];	//char CommandList[500];	int Login;	char Message[1024];	//int  MessageLen;	struct sockaddr clientip;	int  mysock,iplen;	int RetCode;	FileOpr *Fileopr=new FileOpr();		printf("\n SysAdmin is started!\n");	memset(ServerIP,0,sizeof(ServerIP));	memset(AdminUser,0,sizeof(AdminUser));	//从配置文件中获取系统管理(服务器端监听)线程信息	if((RetCode=Fileopr->RWOpen("../config/SysAdmin.ini", "r"))>0)     //打开配置文件	{		printf("Error[%d]: Opening SysAdmin.ini file.",RetCode);		return (void *)NULL;	}	if((RetCode=Fileopr->RWRead("ServerIP",ServerIP))>0)	{		printf("Error[%d]: Reading 'ServerIP' from SysAdmin.ini file.",RetCode);		return (void *)NULL;	}	if((RetCode=Fileopr->RWRead("AdminPort",&AdminPort))>0)	{		printf("Error[%d]: Reading 'AdminPort' from SysAdmin.ini file.",RetCode);		return (void *)NULL;	}	if((RetCode=Fileopr->RWRead("AdminUser",AdminUser))>0)	{		printf("Error[%d]: Reading 'AdminUser' from SysAdmin.ini file.",RetCode);		return (void *)NULL;	}	//if((RetCode=Fileopr->RWRead("AdminPasswd",AdminPasswd))>0)	//{	//	printf("Error[%d]: Reading 'AdminPasswd' from SysAdmin.ini file.",RetCode);	//	return (void *)NULL;	//}	if((RetCode=Fileopr->RWClose())>0)    //关闭配置文件	{		printf("Error[%d]: Closing SysAdmin.ini file.",RetCode);		return (void *)NULL;	}	delete Fileopr;	//===============================================	//打开监听管理命令监听端口	RetCode=AdminSock.Make_Listen_Sock(ServerIP, AdminPort);	if(RetCode<=0)	{		AdminSock.Close_sock();		printf("Error[%d]: SysAdmin Failed to Listen the port.\n",RetCode);		return (void *)NULL;	}	printf("\n Listening at [%s : %d].",ServerIP,AdminPort);	printf("\n AdminUser=[%s], Socket=[%d]\n",AdminUser,AdminSock.sock);	iplen=sizeof(clientip); 		while(1)	{		mysock=accept(AdminSock.sock,&clientip,(socklen_t *)&iplen);		//printf("\nSysAdmin: accept connection from [%s].\n",inet_ntoa(clientip));		//设置socket的最大阻塞时间,3分钟没有收到任何信息便断开连接??????????????????????		Login=0;		for(int i=0;i<3;i++)	//三次机会输入登录信息		{			memset(Command,0,sizeof(Command));			memset(Message,0,sizeof(Message));			strcpy(Message,"Input your login authentication: ");			if(write(mysock,Message,strlen(Message))!=(int)strlen(Message))			{			     printf("SysAdmin: Connection Lost when Writing to Sock!\n");			     break;			}			RetCode=read(mysock, Command ,sizeof(Command));			if(RetCode<=0)			{				close(mysock);				printf("SysAdmin: Connection Lost When reading on Sock.\n");				break;			}			printf("\n SysAdmin: Got Command=[%s].\n",Command);			if(strcmp(Command,AdminUser)==0)			{				Login=1;				break;			}			//else printf("\n SysAdmin: Bad Login! \n");		}		if(Login)		{			strcpy(Message,"Logined successfully!\nInput your Command as follows:\nrefresh : To refresh the configuration\nSTOP : To terminate Proxy Gateway\nquit : To quit this Administrator's Tool.");			if(write(mysock,Message,strlen(Message))!=(int)strlen(Message))			{			     printf("SysAdmin: Connection Lost when Writing to Sock!\n");			     close(mysock);			     continue;			}			printf("\n SysAdmin: Login successfully! \n");		}		else	//登录失败		{			strcpy(Message,"Logined Failed! Connection is Lost!");			write(mysock,Message,strlen(Message));			close(mysock);			printf("\n SysAdmin: Logined Failed! Connection is CUT!\n");			continue;		}		while(1)	//不断接收命令		{			memset(Command,0,sizeof(Command));			RetCode=read(mysock, Command ,sizeof(Command));			if(RetCode<=0)			{				close(mysock);				printf("SysAdmin: Connection Lost When reading on Sock.\n");				break;			}			printf("\n SysAdmin: Got Command=[%s].\n",Command);			//命令解析、执行			if(strcmp(Command,"echo")==0)			{				memset(Message,0,sizeof(Message));				strcpy(Message,"echo! Connection is ok!");				if(write(mysock,Message,strlen(Message))!=(int)strlen(Message))				{			     	     printf("SysAdmin: Connection Lost when Writing to Sock!\n");				     close(mysock);				     break;				}			}			//else if(strcmp(Command,"quit")==0)			else if(strcmp(Command,"STOP")==0)			{				close(mysock);			     	//printf("SysAdmin: The Administrating Terminal has QUIT!\n");				break;					}			else if(0)	//其他命令			{						}			else	//错误命令			{				memset(Message,0,sizeof(Message));				strcpy(Message,"Unknown Command!");				if(write(mysock,Message,strlen(Message))!=(int)strlen(Message))				{			    	     printf("SysAdmin: Connection Lost when Writing to Sock!\n");				     close(mysock);				     break;				}				}		}//while(1),不断接收命令	}//while(1),接收下一次管理连接	return (void *)NULL; }*/

⌨️ 快捷键说明

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