📄 remoteadmin.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 + -