当前位置: 首页 > article >正文

二十、FTP云盘

1、服务端

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/types.h>          /* See NOTES */
#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>#define bufsize 1024
int change(char cmd[128])
{if(!strcmp("ls",cmd)){return 1;}else if(!strcmp("ps",cmd)){return 2;}else if(!strcmp("g",cmd)){return 3;}else if(strstr(cmd,"cd")){return 4;}else if(strstr(cmd,"get")){return 5;}else if(strstr(cmd,"put")){return 6;}}
char *getbehind(char cmd[128])
{char *p;p = (char *)malloc(128);p = strtok(cmd," ");p = strtok(NULL," ");return p;
}
void getmessage(char cmd[128],int c_fd)
{char *p = getbehind(cmd);int fd = open(p,O_RDWR|O_CREAT,0666);char *readbuf = (char *)malloc(8000);read(c_fd,readbuf,8000);write(fd,readbuf,8000);close(fd);memset(readbuf,0,8000);
}
void putmessage(char cmd[128],int c_fd)
{int fd =-1;char *readbuf = (char *)malloc(8000);char *p =(char *)malloc(8000);readbuf = getbehind(cmd);if(access(readbuf,F_OK) == -1){printf("put file failed\n");}else{fd = open(readbuf,O_RDWR,0666);read(fd,p,8000);write(c_fd,p,8000);printf("the file put success\n");close(fd);memset(p,0,8000);}}void choosecmd(char* cmd,int c_fd)
{int ret =-1;FILE *fdb;int fd;char *freadbuf = (char *)malloc(8000);char *readbuf = (char *)malloc(8000);char *p = (char*)malloc(8000);ret = change(cmd);switch(ret){case 1:fdb = popen("ls","r");fread(freadbuf,8000,1,fdb);write(c_fd,freadbuf,8000);memset(freadbuf,0,8000);printf("ok\n");break;   case 2:system("ps");break;case 3:read(c_fd,freadbuf,128);printf("%s\n",freadbuf);exit(1);break;case 4:p = getbehind(cmd);chdir(p);memset(p,0,sizeof(p));break;case 5:putmessage(cmd,c_fd);break;case 6:getmessage(cmd,c_fd);break;}}
int main(int argc,char** argv)
{int c_fd = -1;int s_fd =-1;struct sockaddr_in c_addr;if(argc!=3){perror("argc\n");exit(1);}//sockets_fd = socket(AF_INET,SOCK_STREAM,0);if(s_fd == -1){perror("socket\n");exit(1);}memset(&c_addr,0,sizeof(c_addr));c_addr.sin_family = AF_INET;c_addr.sin_port = htons(atoi(argv[2]));inet_aton(argv[1],&c_addr.sin_addr);//bindbind(s_fd,(struct sockaddr*)&c_addr,sizeof(c_addr));//listenlisten(s_fd,10);//acceptsocklen_t clen = sizeof(c_addr);int nread = 0;char readbuf[1024];printf("wait connecting\n");memset(&c_addr,1,clen);while(1){c_fd = accept(s_fd,(struct sockaddr*)&c_addr,&clen);if(c_fd == -1){perror("accept");exit(1);}printf("connect success!%s\n",inet_ntoa(c_addr.sin_addr));if(fork() == 0){while(1){nread = read(c_fd,readbuf,128);choosecmd(readbuf,c_fd);memset(readbuf,0,sizeof(readbuf));}}}return 0;
}

2、客户端

#include<stdio.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/types.h>          /* See NOTES */
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/stat.h>
#include <fcntl.h>
#define bufsize 1024#define bufsize 1024
char *getbehind(char cmd[128])
{char *p;p = (char *)malloc(8000);p = strtok(cmd," ");p = strtok(NULL," ");return p;
}
void getmessage(char cmd[128],int c_fd)
{char *p = getbehind(cmd);int fd = open(p,O_RDWR|O_CREAT,0666);char *readbuf = (char *)malloc(8000);read(c_fd,readbuf,8000);write(fd,readbuf,8000);close(fd);memset(readbuf,0,8000);
}
void putmessage(char cmd[128],int c_fd)
{int fd =-1;char *readbuf = (char *)malloc(8000);char *p =(char *)malloc(8000);readbuf = getbehind(cmd);if(access(readbuf,F_OK) == -1){printf("put file failed\n");}else{fd = open(readbuf,O_RDWR,0666);read(fd,p,8000);write(c_fd,p,8000);printf("the file put success\n");close(fd);memset(p,0,8000);}}
int change(char cmd[128])
{if(!strcmp("ls",cmd)){return 1;}else if(!strcmp("lls",cmd)){return 2;}else if(!strcmp("g",cmd)){return 3;}else if(strstr(cmd,"cd")){return 4;}else if(strstr(cmd,"lcd")){return 5;}else if(strstr(cmd,"get")){return 6;}else if(strstr(cmd,"put")){return 7;}}
void choosecmd(char cmd[128],int c_fd)
{int ret =-1;char *p = (char*)malloc(8000);int fd =-1;char *readbuf =(char*)malloc(8000);ret = change(cmd);switch(ret){case 1:read(c_fd,p,8000);printf("%s\n",p);memset(p,0,8000);break;   case 2:system("ls");break;case 3:printf("unconnecting\n");write(c_fd,"away host",128);close(c_fd);exit(-1);break;case 4:break;case 5:p = getbehind(cmd);chdir(p);memset(p,0,sizeof(p));break;case 6:getmessage(cmd,c_fd);break;case 7:putmessage(cmd,c_fd);break;}}
int main(int argc,char** argv)
{int c_fd = -1;struct sockaddr_in c_addr;if(argc!=3){perror("argc\n");exit(1);}//socketc_fd = socket(AF_INET,SOCK_STREAM,0);if(c_fd == -1){perror("socket\n");exit(1);}memset(&c_addr,0,sizeof(c_addr));c_addr.sin_family = AF_INET;c_addr.sin_port = htons(atoi(argv[2]));inet_aton(argv[1],&c_addr.sin_addr);//connectint clent = sizeof(c_addr);if(connect(c_fd,(struct sockaddr*)&c_addr,clent) == -1){perror("connect");perror("why:");exit(1);}//wait sendchar writebuf[bufsize] = {0};printf("connect .....\n");while(1){fgets(writebuf,1024,stdin);writebuf[strcspn(writebuf, "\n")] = '\0';printf("cmd:%s\n",writebuf);write(c_fd,writebuf,strlen(writebuf));choosecmd(writebuf,c_fd);printf("....................cmd......................\n");memset(writebuf,0,sizeof(writebuf));}return 0;

相关文章:

二十、FTP云盘

1、服务端 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <sys/types.h> #include <unistd.h> #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> #include <netinet/in.h>…...

【4】k8s集群管理系列--harbor镜像仓库本地化搭建

一、harbor基本概念 ‌Harbor是一个由VMware开源的企业级Docker镜像仓库解决方案‌&#xff0c;旨在解决企业在容器化应用部署中的痛点&#xff0c;提供镜像存储、管理、安全和分发的全生命周期管理‌。Harbor扩展了Docker Registry&#xff0c;增加了企业级功能&#xff0c;如…...

Oracle 12.1.0.2补丁安装全流程

第一步&#xff0c;先进行备份 tar -cvf u01.tar /u01 第二步&#xff0c;更新OPatch工具包 根据补丁包中readme信息汇总提示的信息&#xff0c;下载对应版本的OPatch工具包&#xff0c;本次下载的版本为&#xff1a; p6880880_122010_Linux-x86-64.zip opatch版本为最新的…...

【AAOS】【源码分析】Car UX Restrictions

AAOS UX的核心理念:安全驾驶是驾驶员的首要责任。汽车制造商和应用程序开发人员的所有设计都必须反映这一优先事项。 AAOS平台允许设备制造商(OEM)对不同驾驶状态下的限制进行定制。 驾驶员分心指南 只有符合Driver Distraction Guidelines的应用才可以在驾驶过程中运行。…...

解读《人工智能指数报告 2025》:洞察 AI 发展新态势

美国斯坦福大学 “以人为本人工智能研究院”&#xff08;HAI&#xff09;近日发布的第八版《人工智能指数报告》&#xff08;AI Index Report 2025&#xff09;备受全球瞩目。自 2017 年首次发布以来&#xff0c;该报告一直为政策制定者、研究人员、企业高管和公众提供准确、严…...

【SpringBoot+Vue自学笔记】003 SpringBoot Controll

跟着这位老师学习的&#xff1a;https://www.bilibili.com/video/BV1nV4y1s7ZN?vd_sourceaf46ae3e8740f44ad87ced5536fc1a45 这段话的意思其实是&#xff1a;Spring Boot 简化了传统 Web 项目的搭建流程&#xff0c;让你少折腾配置&#xff0c;直接开搞业务逻辑。 &#x1f52…...

探索Web3平台的数据安全和保护机制

在数字化时代&#xff0c;Web3 平台以其去中心化、透明性和用户主权等特点&#xff0c;正逐渐成为互联网技术的新宠。然而&#xff0c;随着数据价值的日益凸显&#xff0c;Web3 平台的数据安全和保护机制变得尤为重要。本文将深入探讨 Web3 平台的数据安全和保护机制&#xff0…...

基于ssh密钥访问远程Linux

1、在本地机器上生成密钥对&#xff08;默认保存在 ~/.ssh/&#xff09; ssh-keygen -t ed25519 或使用 RSA(兼容性更好)&#xff1a; ssh-keygen -t rsa -b 4096 2、 将公钥上传到远程主机 方法一&#xff1a;使用 ssh-copy-id ssh-copy-id -i ~/.ssh/id_ed25519.pub us…...

《基于神经网络实现手写数字分类》

《基于神经网络实现手写数字分类》 一、主要内容&#xff1a; 1、通过B站陈云霁老师的网课&#xff0c;配合书本资料&#xff0c;了解神经网络的基本组成和数学原理。 2、申请云平台搭建实验环境 3、基于5个不同的实验模块逐步理解实验操作步骤&#xff0c;并实现不同模块代码…...

1 cline 提示词工程指南-架构篇

cline 提示词工程指南-架构篇 本篇是 cline 提示词工程指南的学习和扩展&#xff0c;可以参阅&#xff1a; https://docs.cline.bot/improving-your-prompting-skills/prompting 前言 cline 是 vscode 的插件&#xff0c;用来在 vscode 里实现 ai 编程。 它使得你可以接入…...

代理模式简述

目录 一、主要角色 二、类型划分 三、静态代理 示例 缺点 四、动态代理 JDK动态代理 示例 缺点 CGLib动态代理 导入依赖 示例 五、Spring AOP 代理模式是一种结构型设计模式&#xff0c;通过代理对象控制对目标对象的访问&#xff0c;可在不改变目标对象情况下增强…...

Operator 开发入门系列(一):Hello World

背景 我们公司最近计划将产品迁移到 Kubernetes 环境。 为了更好地管理和自动化我们的应用程序&#xff0c;我们决定使用 Kubernetes Operator。 本系列博客将记录我们学习和开发 Operator 的过程&#xff0c;希望能帮助更多的人入门 Operator 开发。 目标读者 对 Kubernete…...

【Docker】运行错误提示 unknown shorthand flag: ‘d‘ in -d ----详细解决方法

使用docker拉取Dify的时候遇到错误 错误提示 unknown shorthand flag: d in -dUsage: docker [OPTIONS] COMMAND [ARG...]错误原因解析 出现 unknown shorthand flag: d in -d 的根本原因是 Docker 命令格式与当前版本不兼容&#xff0c;具体分为以下两种情况&#xff1a; 新…...

【AI插件开发】Notepad++ AI插件开发实践:实现对话窗口功能

引言 之前的文章已经介绍实现了AI对话窗口&#xff0c;但只有个空壳&#xff0c;没有实现功能。本次将集中完成对话窗口的功能&#xff0c;主要内容为&#xff1a; 模型动态切换&#xff1a;支持运行时加载配置的AI模型列表交互式输入处理&#xff1a;实现多行文本输入与Ctrl…...

在激烈竞争下B端HMI设计怎样打造独特用户体验?

在当今数字化高度发展的时代&#xff0c;B 端市场竞争愈发激烈。对于 B 端 HMI&#xff08;人机界面&#xff09;设计而言&#xff0c;打造独特的用户体验已成为在竞争中脱颖而出的关键因素。B 端用户在复杂的工作场景中&#xff0c;对 HMI 设计有着独特的需求和期望&#xff0…...

【Netty篇】Handler Pipeline 详解

目录 一、 Handler & Pipeline——流水线上的“特种部队”与“生产线”1、 ChannelHandler —— 流水线上的“特种兵”&#x1f46e;‍♂️2、 ChannelPipeline —— 生产线上的“接力赛跑”&#x1f3c3;‍♀️&#x1f3c3;‍♂️ 二、 代码实例1、 服务端代码示例2、 客…...

计算机网络 - UDP协议

通过一些问题来讨论 UDP 协议 什么是 UDP&#xff1f;举几个应用了 UDP 协议的例子UDP 与 TCP 有啥区别&#xff1f;&#xff08;PS&#xff1a;介绍三四个就可以了&#xff0c;不用说太多&#xff09;具体 UDP 是不可靠的&#xff0c;那你觉得如何实现一个可靠的 UDP &#x…...

16-算法打卡-哈希表-两个数组的交集-leetcode(349)-第十六天

1 题目地址 349. 两个数组的交集 - 力扣&#xff08;LeetCode&#xff09;349. 两个数组的交集 - 给定两个数组 nums1 和 nums2 &#xff0c;返回 它们的 交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 1&#xff1a;输入&#xff1a;nu…...

java + spring boot + mybatis 通过时间段进行查询

前端传来的只有日期内容&#xff0c;如&#xff1a;2025-04-17 需要在日期内容的基础上补充时间部分&#xff0c;代码示例&#xff1a; /*** 日志查询&#xff08;分页查询&#xff09;* param recordLogQueryDTO 查询参数对象* return 日志列表*/Overridepublic PageBean<…...

AI与物联网的深度融合:开启智能生活新时代

在当今数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;和物联网&#xff08;IoT&#xff09;作为两大前沿技术&#xff0c;正在加速融合&#xff0c;为我们的生活和工作带来前所未有的变革。这种融合不仅提升了设备的智能化水平&#xff0c;还为各行各业带来了新的机…...

浔川AI翻译v7.0更新预告

亲爱的浔川AI翻译用户&#xff1a; 感谢您一直以来的支持&#xff01;浔川AI翻译自推出以来&#xff0c;已迭代6个版本&#xff0c;其中**v2.0和v4.0因技术问题&#xff08;翻译结果显示异常、注册失败、密码找回功能失效等&#xff09;**被迫下架。我们深知这些问题影响了您…...

helm账号密码加密

1、安装工具 sudo apt update sudo apt install gnupg -y wget https://github.com/getsops/sops/releases/download/v3.10.2/sops-v3.10.2.linux.amd64 mv sops-v3.10.2.linux.amd64 /usr/local/bin/sops chmod x /usr/local/bin/sops2、生成加密文件 gpg --full-generate-…...

Flink 编程基础:Scala 版 DataStream API 入门

大家好&#xff01;我是心海 流处理技术在大数据时代正变得越来越重要&#xff0c;而 Apache Flink 作为领先的流处理引擎&#xff0c;凭借其高性能、低延迟和丰富的 API 受到了广泛关注。本文将以 Scala 语言为例&#xff0c;详细讲解 Flink DataStream API 的基本编程模型&am…...

实战|使用环信Flutter SDK构建鸿蒙HarmonyOS应用及推送配置

本文为大家介绍如何在 Flutter 环境创建 Harmony 项目并集成环信即时通讯IM以及环信 Flutter Harmony 推送配置。 已经基于环信的 Flutter 项目也可以参考本文适配鸿蒙端。 一、开发环境要求 前置条件 1.安装DevEco-Studio 2.安装模拟器 DevEco-Studio 下载与操作指导&…...

HTML5好看的水果蔬菜在线商城网站源码系列模板5

文章目录 1.设计来源1.1 主界面1.2 关于我们1.3 商品服务1.4 果蔬展示1.5 联系我们1.6 商品具体信息1.7 登录注册 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板&#xff0c;程序开发&#xff0c;在线开发&#xff0c;在线沟通 作者&#xff1a;xcLeigh 文章地址&#…...

宜搭与金蝶互通——连接器建立

一、 进入连接器工厂 图1 连接器入口 二、 新建连接器 图2 新建连接器第一步 1、 连接器显示名,如图2中①所示; 2、 图2中②域名,是金蝶系统API接口里面的“完整服务地址”com之前的信息,不含“https”,如图3中①所示; 3、 Base Url通常为“/”,如图2…...

SP7733:HPYNOS - Happy Numbers I(参考我之前的文章,哈希)

题目大意 我们定义“破坏”整数的过程是对其每一位上的数字的平方求和成为一个新数&#xff0c;如果一个数在经过若干次“破坏”以后变成了 1&#xff0c;那么这个数就是一个高兴的数字&#xff0c;输出变化次数&#xff0c;否则如果永远不会变成 1&#xff0c;输出 −1。 例如…...

《Java 泛型的作用与常见用法详解》

大家好呀&#xff01;&#x1f44b; 今天我们要聊的是Java中一个超级重要但又让很多初学者头疼的概念——泛型(Generics)。带你彻底搞懂它&#xff01;&#x1f4aa; 准备好你的小本本&#xff0c;我们开始啦&#xff5e;&#x1f4dd; 一、为什么需要泛型&#xff1f;&#x…...

【JavaWeb】详细讲解 HTTP 协议

文章目录 一、HTTP简介1.1 概念1.2 特点 二、协议2.1 HTTP-请求协议&#xff08;1&#xff09;GET方式&#xff08;2&#xff09;POST方式&#xff08;3&#xff09;GET和POST的区别&#xff1a; 2.2 HTTP-响应协议&#xff08;1&#xff09;格式&#xff08;2&#xff09;响应…...

【android bluetooth 框架分析 02】【Module详解 4】【Btaa 模块介绍】

1. 背景 我们在上一篇文章中介绍 HciHal 模块时&#xff0c;有如下代码 // system/gd/hal/hci_hal_android_hidl.ccvoid ListDependencies(ModuleList* list) const {list->add<SnoopLogger>();if (common::init_flags::btaa_hci_is_enabled()) {list->add<ac…...