2020-01-13 10:27:00 -05:00

259 lines
6.5 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
说明:存放接口及常用结构
*/
#ifndef _COMMON_H
#define _COMMON_H
// 确定编译环境
#define IN_LINUX
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#ifdef IN_LINUX
//#include <sys/io.h>
#include <sys/types.h>
#include <unistd.h>
#include <pthread.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/errno.h>
#include <sys/stat.h>
#include <fcntl.h>
#else
#include <io.h>
#include <direct.h>
#include <windows.h>
#include <winsock.h>
#include <basetsd.h>
#endif
#pragma comment(lib,"ws2_32.lib")
#define MAX_BUFFER_SIZE 1024
#define MAX_CMDLINE_LENGTH 200
#define MAX_THREAD_NUM 40
#define LENGTH_OF_LISTEN_QUEUE 20
#define MAX_IP_LENGTH 20
#define MAX_CMDTYPE_LENGTH 20
#define MAX_RSP_LENGTH 40
#define BUFSIZE 65535
#define CONFIG "config.ini"
//工具的版本
#define VERSION "1.1.1"
//应答消息
#define RSP_OK "0"
#define RSP_FAILED "1"
#define RET_OK 0
#define RET_FAILED 1
//支持的命令类型(命令类型的定义字符串不超过 MAX_CMDTYPE_LENGTH 定义的长度)
#define COPYFILE "copyfile"
#define CMD "cmd"
#define CMDWAIT "cmdwait" //等待客户端命令执行完成
#define SENDFILE "sendfile"
#define FINDPROC "findproc"
#define RSP "rsp" //应答消息
#define CMDECHO "cmdecho"
#define CMD_FALG_WAIT 0
#define CMD_FALG_NOWAIT 1
#define CMD_ECHO 2
//服务器端口号,从配置文件中读取
int g_port;
#ifdef IN_LINUX
/*---------------------------------
*说明: 与客户端进行交互
*参数说明:
*返回值: 0成功否则失败
-----------------------------------*/
void * TalkToClient_linux(void *data);
/*---------------------------------
*说明: 发送数据给客户端
*参数说明: socketID 已经建立连接的socket句柄
buffer 需发送给客户端的数据
*返回值: 0成功否则失败
-----------------------------------*/
int SendDataToClient_linux(int socketID, char *data, int iDataLen);
/*---------------------------------
*说明: 接收来自给客户端的数据
*参数说明: socketID: 已经建立连接的socket句柄
buffer : 为收到的数据
*返回值: 0 断开连接
大于0 收到数据的长度
-1 失败
-----------------------------------*/
int RecvDataFromClient_linux(int socketID, char *buffer, int iBufLen);
/*---------------------------------
*说明: 在linux环境下查找指定进程是否存在
*参数说明:
*返回值: 0 存在,其他表示不存在
-----------------------------------*/
int FindProcess_linux(char *pProcessName);
/*---------------------------------
*说明: 初始化服务连接及监听
*参数说明:
*返回值: 0成功否则失败
-----------------------------------*/
int InitServer_linux();
/*---------------------------------
*说明: 开始提供服务
*参数说明:
*返回值: 0成功否则失败
-----------------------------------*/
int StartService_linux(int server_socket);
#else
/*---------------------------------
*说明: 与客户端进行交互
*参数说明:
*返回值: 0成功否则失败
-----------------------------------*/
ULONG __stdcall TalkToClient_windows(void* lpParameter);
/*---------------------------------
*说明: 发送数据给客户端
*参数说明: socketID 已经建立连接的socket句柄
buffer 需发送给客户端的数据
*返回值: 0成功否则失败
-----------------------------------*/
int SendDataToClient_windows(SOCKET socketID, char *data, int iDataLen);
/*---------------------------------
*说明: 接收来自给客户端的数据
*参数说明: socketID: 已经建立连接的socket句柄
buffer : 为收到的数据,调用者必须手动释放该空间
*返回值: 0 断开连接
大于0 收到数据的长度
-1 失败
-----------------------------------*/
int RecvDataFromClient_windows(SOCKET socketID, char *buffer, int iBufLen);
/*---------------------------------
*说明: 在windows环境下查找指定进程是否存在
*参数说明:
*返回值: 0 存在,其他表示不存在
-----------------------------------*/
int FindProcess_windows(char *pProcessName);
/*---------------------------------
*说明: 初始化服务连接及监听
*参数说明:
*返回值: 0成功否则失败
-----------------------------------*/
int InitServer_windows();
/*---------------------------------
*说明: 开始提供服务
*参数说明:
*返回值: 0成功否则失败
-----------------------------------*/
int StartService_windows(SOCKET server_socket);
#endif
/*---------------------------------
*说明: 执行拷贝文件到客户端
*参数说明: socketID 已经建立连接的socket句柄
data 需要拷贝的文件名(全路径)
*返回值: 0成功否则失败
-----------------------------------*/
int CopyFileToClient(void* socketID, char *pFile);
/*---------------------------------
*说明: 接收来自客户端的文件
*参数说明: socketID 已经建立连接的socket句柄
file 需要保存的文件名(全路径)
*返回值: 0成功否则失败
-----------------------------------*/
int RecvFileFromClient(void* socketID, char *pFile);
/*---------------------------------
*说明: 执行系统命令
*参数说明: socketID 已经建立连接的socket句柄
pCmd 执行的命令
*返回值: 0成功否则失败
-----------------------------------*/
int RunSystemCmd(void* socketID, char *pCmd, int iWaitFlag);
/*---------------------------------
*说明: 解析客户端发送过来的命令
*参数说明: socketID 已经建立连接的socket句柄
data 客户端发送过来的命令
*返回值: 0成功否则失败
-----------------------------------*/
int ParseCmd(void* socketID, char *data);
/*---------------------------------
*说明: 发送应答消息给客户端
*参数说明: socketID 已经建立连接的socket句柄
data 发送数据
*返回值: 0成功否则失败
-----------------------------------*/
int SendRspToClient(void* socketID, char *result);
/*---------------------------------
*说明: 等待客户端的应答
*参数说明: socketID 已经建立连接的socket句柄
*返回值: 0成功否则失败
-----------------------------------*/
int WaitRspFromClient(void* socketID);
/*---------------------------------
*说明: 解析应答消息
*参数说明:
*返回值: 0成功否则失败
-----------------------------------*/
int ParseRsp(char* strRsp);
/*---------------------------------
*说明: 查看指定的程序是否正在运行
*参数说明: socketID 已经建立连接的socket句柄
data 进程名
*返回值: 0成功否则失败
-----------------------------------*/
int FindProcess(void* socketID, char *data);
/*---------------------------------
*说明: 初始化
*参数说明:
*返回值: 0成功否则失败
-----------------------------------*/
int Init();
/*---------------------------------
*说明: 运行
*参数说明:
*返回值: 0成功否则失败
-----------------------------------*/
int Run();
#endif