233 lines
6.1 KiB
C
233 lines
6.1 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>
|
||
#else
|
||
#include <io.h>
|
||
#include <direct.h>
|
||
#include <windows.h>
|
||
#include <basetsd.h>
|
||
#include <winsock.h>
|
||
|
||
#pragma comment(lib,"wsock32.lib")
|
||
|
||
#endif
|
||
|
||
#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 MAX_RECONNECT_TIMERS 3
|
||
#define BUFSIZE 65535
|
||
|
||
#define MAX_CONNECT_TIMEOUT 3600
|
||
|
||
#define CMDLIST "cmdlist"
|
||
|
||
//应答消息
|
||
#define RSP_OK "0"
|
||
#define RSP_FAILED "1"
|
||
|
||
#define RET_OK 0
|
||
#define RET_FAILED 1
|
||
|
||
#define CMD_FALG_WAIT 0
|
||
#define CMD_FALG_NOWAIT 1
|
||
#define CMD_ECHO 2
|
||
|
||
|
||
//支持的命令类型(命令类型的定义字符串不超过 MAX_CMDTYPE_LENGTH 定义的长度)
|
||
#define COPYFILE "copyfile"
|
||
#define CMD "cmd" //只负责下发命令,不管执行的情况
|
||
#define CMDWAIT "cmdwait" //等待客户端命令执行完成
|
||
#define SENDFILE "sendfile"
|
||
#define FINDPROC "findproc"
|
||
#define RSP "rsp" //应答消息
|
||
#define CMDECHO "cmdecho" //显示执行结果,等待客户端命令执行完成
|
||
|
||
#ifdef IN_LINUX
|
||
/*---------------------------------
|
||
*说明: 发送数据给服务端
|
||
*参数说明: socketID: 已经建立连接的socket句柄
|
||
buffer : 需发送给服务端的数据
|
||
*返回值: 0成功,否则失败
|
||
-----------------------------------*/
|
||
int SendDataToServer_linux(int socketID, char *data, int iLen);
|
||
|
||
|
||
/*---------------------------------
|
||
*说明: 接收来自给服务端的数据
|
||
*参数说明: socketID: 已经建立连接的socket句柄
|
||
buffer : 为收到的数据,调用者必须手动释放该空间
|
||
iBufLen : 发送数据的长度
|
||
*返回值: 0成功,否则失败
|
||
-----------------------------------*/
|
||
int RecvDataFromServer_linux(int socketID, char *buffer, int iBufLen);
|
||
|
||
|
||
/*---------------------------------
|
||
*说明: 连接服务端
|
||
*参数说明:
|
||
*返回值: 0成功,否则失败
|
||
-----------------------------------*/
|
||
int ConnectServer_linux(const char* pServerIP, int iServerPort, int iTimeout);
|
||
|
||
/*---------------------------------
|
||
*说明: 与客户端进行交互线程
|
||
*参数说明:
|
||
*返回值: 0成功,否则失败
|
||
-----------------------------------*/
|
||
void* Thread_linux(void* para);
|
||
|
||
#else
|
||
|
||
/*---------------------------------
|
||
*说明: 发送数据给服务端
|
||
*参数说明: socketID: 已经建立连接的socket句柄
|
||
buffer : 需发送给服务端的数据
|
||
iBufLen : 发送数据的长度
|
||
*返回值: 0成功,否则失败
|
||
-----------------------------------*/
|
||
int SendDataToServer_windows(int socketID, char *data, int iBufLen);
|
||
|
||
|
||
/*---------------------------------
|
||
*说明: 接收来自给服务端的数据
|
||
*参数说明: socketID: 已经建立连接的socket句柄
|
||
buffer : 为收到的数据,调用者必须手动释放该空间
|
||
*返回值: 0成功,否则失败
|
||
-----------------------------------*/
|
||
int RecvDataFromServer_windows(int socketID, char *buffer, int iBufLen);
|
||
|
||
|
||
/*---------------------------------
|
||
*说明: 连接服务端
|
||
*参数说明:
|
||
*返回值:
|
||
-----------------------------------*/
|
||
SOCKET ConnectServer_windows(const char* pServerIP, int iServerPort, int iTimeout);
|
||
|
||
/*---------------------------------
|
||
*说明: 与客户端进行交互
|
||
*参数说明:
|
||
*返回值: 0成功,否则失败
|
||
-----------------------------------*/
|
||
|
||
ULONG __stdcall Thread_windows(void *para);
|
||
|
||
#endif
|
||
|
||
/*---------------------------------
|
||
*说明: 从服务端拷贝文件
|
||
*参数说明: socketID: 已经建立连接的socket句柄
|
||
data : 需要拷贝的文件信息
|
||
*返回值: 0成功,否则失败
|
||
-----------------------------------*/
|
||
int CopyFileFromServer(void* socketID, char *data);
|
||
|
||
/*---------------------------------
|
||
*说明: 发送文件给服务端
|
||
*参数说明: socketID: 已经建立连接的socket句柄
|
||
data : 需要发送的文件信息
|
||
*返回值: 0成功,否则失败
|
||
-----------------------------------*/
|
||
int SendFileToServer(void* socketID, char *data);
|
||
|
||
/*---------------------------------
|
||
*说明: 查看服务端当前指定的程序是否正在运行
|
||
*参数说明: socketID: 已经建立连接的socket句柄
|
||
data : 需要发送的文件信息
|
||
*返回值: 0成功,否则失败
|
||
-----------------------------------*/
|
||
int FindProcessFromServer(void* socketID, char *data);
|
||
|
||
|
||
/*---------------------------------
|
||
*说明: 创建线程
|
||
*参数说明:
|
||
*返回值: 0成功,否则失败
|
||
-----------------------------------*/
|
||
int CreateSubThread(char *para);
|
||
|
||
|
||
/*---------------------------------
|
||
*说明: 解析cmdlist上的命令
|
||
*参数说明:
|
||
*返回值: 0成功,否则失败
|
||
-----------------------------------*/
|
||
int ParseCmd(char *data, char *ip, int *port, char *cmd);
|
||
|
||
|
||
/*---------------------------------
|
||
*说明: 与客户端进行交互
|
||
*参数说明:
|
||
*返回值: 0成功,否则失败
|
||
-----------------------------------*/
|
||
int TalkToServer(void* para, int iTimeout);
|
||
|
||
|
||
/*---------------------------------
|
||
*说明: 发送系统命令到服务端
|
||
*参数说明:
|
||
*返回值: 0成功,否则失败
|
||
-----------------------------------*/
|
||
int SendCmdToServer(void* socketID, char* para, int isWaitFlag);
|
||
|
||
/*---------------------------------
|
||
*说明: 解析应答消息
|
||
*参数说明:
|
||
*返回值: 0成功,否则失败
|
||
-----------------------------------*/
|
||
int ParseRsp(char* strRsp);
|
||
|
||
/*---------------------------------
|
||
*说明: 发送应答消息给服务端
|
||
*参数说明: socketID: 已经建立连接的socket句柄
|
||
data : 发送数据
|
||
*返回值: 0成功,否则失败
|
||
-----------------------------------*/
|
||
int SendRspToSever(void* socketID, char *result);
|
||
|
||
/*---------------------------------
|
||
*说明: 等待服务端的应答
|
||
*参数说明: socketID: 已经建立连接的socket句柄
|
||
*返回值: 0成功,否则失败
|
||
-----------------------------------*/
|
||
int WaitRspFromServer(void* socketID);
|
||
|
||
/*---------------------------------
|
||
*说明: 执行cmdlist中的命令
|
||
*参数说明:
|
||
*返回值: 0成功,否则失败
|
||
-----------------------------------*/
|
||
int RunCmdlist();
|
||
|
||
/*---------------------------------
|
||
*说明: 执行命令行参数
|
||
*参数说明:
|
||
*返回值: 0成功,否则失败
|
||
-----------------------------------*/
|
||
int RunCmd(int argc, char **argv);
|
||
|
||
#endif
|