259 lines
6.5 KiB
C
259 lines
6.5 KiB
C
/*
|
||
说明:存放接口及常用结构
|
||
*/
|
||
#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
|