简易远程遥控程序

实现:基于winsock TCP,文件传输协议是自定义的

功能:
客户端命令:hello,root,dir,get,put,exec,del,shutdown
服务器返回:HELLO 返回主机名OK;
root 返回主机所有分区
dir [path]返回主机[path]所有文件名
get [path] 下载主机[path]文件
put [path]   将客户端[path]文件上传到Server
del [path] 删除Server文件
exec [path] 运行Server文件
quit 客户端退出
shutdown 客户端退出,Server服务关闭 

  测试:局域网内测试成功,文件类型、大小不受限制

本代码只用来仅供你我探讨学习之用

包结构定义:

#ifndef __DEFINE__H
#define  __DEFINE__H

#define  DEFAULT_MAX_SIZE 2048             // 最大
#define  DEFAULT_ORDER_BUFFER_SIZE 256    // 默认命令缓冲大小
#define  DEFAULT_FILE_BLOCK_SIZE 1024      // 默认文件块大小
#define  DEFAULT_MSG_PACKET_SIZE 128      // 默认消息大小
#define  DEFAULT_ACK_PACKET_SIZE 1024     // 默认应答大小

#define  DEFAULT_PORT 1912               // 默认端口

typedef 
enum {
    ORDER_HELLO
=1,ORDER_ROOT,ORDER_DIR,
        ORDER_GET,ORDER_PUT,ORDER_QUIT,
        ORDER_EXEC,ORDER_DEL,ORDER_SHUTDOWN,ORDER_ERROR
}
ORDER_TYPE;
/************************************************************************/
/*                          消息头                                      */
/************************************************************************/
struct  MSG_HEARDER
{
    unsigned 
int msg_id;//消息ID
    unsigned long msg_length;//消息长度
    MSG_HEARDER():msg_id(0),msg_length(0){ }
}
;

/************************************************************************/
/*                    命令包 msg_id=1                                   */
/* 所有命令:hello,root,dir,quit,get,put,exec,del,shutdown               */
/************************************************************************/
struct  ORDER_PACKET
{
    
struct MSG_HEARDER Msg_Header;//
    ORDER_TYPE order_id;
    
char order_buffer[DEFAULT_ORDER_BUFFER_SIZE];
    ORDER_PACKET():Msg_Header(),order_id(ORDER_ERROR)
{}
}
;

/************************************************************************/
/*                    文件块      msg_id=2                                */
/************************************************************************/
 
struct  FILE_PACKET
 
{
     
char file_packet[DEFAULT_FILE_BLOCK_SIZE+1];
     
int file_block_len;
 }
;

 
/************************************************************************/
 
/*                  文件长度包    msg_id=3                              */
 
/************************************************************************/
 
struct  FILE_LEN_PACKET
 
{     unsigned long file_length;//文件总大小
 }
;

/************************************************************************/
/*                       命令应答包   msg_id=5                          */
/************************************************************************/
struct  ORDER_ANSWER
{
    
struct MSG_HEARDER Msg_Header;//
    union
    
{
        
char answer_buffer[DEFAULT_ACK_PACKET_SIZE];
        
struct FILE_PACKET fp;
        
struct FILE_LEN_PACKET flp;
    }
Answer;
    
    ORDER_ANSWER():Msg_Header()
{}
}
;

 
/************************************************************************/
 
/*                常用信息包       msg_id=4                            */
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值