嵌入式4-16

tftpd
 

#include <myhead.h>
#define SER_IP "192.168.125.243"     //服务器IP地址
#define SER_PORT 69                //服务器端口号
#define CLI_IP "192.168.125.244"     //客户端IP地址
#define CLI_PORT 8889                //客户端端口号
int main(int argc, const char *argv[])
{//创建用于通信的套接字文件描述符int cfd = socket(AF_INET, SOCK_DGRAM, 0);if(cfd == -1){perror("socket error");return -1;}printf("socket success sfd = %d\n", cfd);//绑定IP地址和端口号struct sockaddr_in cin;cin.sin_family = AF_INET;cin.sin_port = htons(CLI_PORT);cin.sin_addr.s_addr = inet_addr(CLI_IP);if(bind(cfd, (struct sockaddr*)&cin, sizeof(cin)) == -1){perror("bind error");return -1;}printf("bind success\n");//服务端信息结构体struct sockaddr_in sin;sin.sin_family = AF_INET;sin.sin_port = htons(SER_PORT);sin.sin_addr.s_addr = inet_addr(SER_IP);//接收文件char data[516] = {0};short *p1=data;*p1=htons(1);char *p2=data+2;strcpy(p2,"5.png");char *p4=p2+strlen(p2)+1;strcpy(p4,"octet");int req_size=4+strlen(p2)+strlen(p4);sendto(cfd,data,req_size,0,(struct sockaddr*)&sin,sizeof(sin));int fd=open("./5.png",O_WRONLY|O_CREAT|O_TRUNC,0777);if(fd==-1){perror("open err");return -1;}while(1){bzero(data,sizeof(data));recv(cfd,data,sizeof(data),0);short *b=data+2;char ack[4]={0};short *q1=ack;*q1=htons(4);short *q2=ack+2;*q2=*b;sendto(cfd,ack,4,0,(struct sockaddr*)&sin,sizeof(sin));		write(fd,data,sizeof(data));int len=strlen(data);if(len<515)break;}close(fd);close(cfd);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/822073.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解读科技智慧公厕改变生活的革命性创新之路

公共厕所&#xff0c;作为城市基础设施的一部分&#xff0c;一直以来都备受人们诟病。脏乱差、设施老旧、管理混乱&#xff0c;成为公共厕所长期存在的问题。然而&#xff0c;随着科技的不断进步&#xff0c;智慧公厕应运而生&#xff0c;为解决公厕难题&#xff0c;智慧公厕源…

目标检测YOLO实战应用案例100讲-自动驾驶场景下的三维目标检测技术研究(续)

目录 知识储备 自动驾驶中多模态三维目标检测 3D目标检测是什么? 1、定义

【ElasticSearch】安装(bug篇)

以下解决办法参考自网友们的分享 1. JDK绑定问题 但其实这样也没有问题&#xff0c;因为内嵌的jdk版本与当前的es版本是适配的 但是&#xff0c;如果内嵌的jdk与当前es不适配&#xff0c;那就要修改配置文件 / 添加环境变量&#xff0c;让es启动的时候能扫描到我们本地的jdk …

安全地创建一个临时文件 - mkstemp

安全地创建一个临时文件 - mkstemp 在我们处理一些敏感数据的时候&#xff0c;可能必须要临时存储在文件中&#xff0c;这个时候就需要创建临时文件&#xff1b; 在我们需要临时创建一些大量的中间数据&#xff0c;并且在程序结束时删除这些文件时&#xff0c;我们就需要创建临…

知识点static、事务的特性、接口

2024-4-16杂记 今日没有学习新的知识&#xff0c;但是学习了一些知识点 事务特性&#xff1a;ACID 1.原子性【Atomicity】&#xff1a;表示事务要么全部完成&#xff0c;要么全部不完成 2.一致性【Consistency】&#xff1a;表示事务处理后数据库&#xff0c;从一个一致性状…

蓝桥杯刷题-货币系统

1371. 货币系统 - AcWing题库 #include <bits/stdc.h>using namespace std;typedef long long LL; const int N 30; LL v , n; LL f[10010]; LL ways 0;int main() {cin >> v >> n;f[0] 1; //初始化 f[0][0] 1 for(int i 1; i < v; i){int v;cin&g…

校园水电能源智能化管理系统

校园作为大量人员集聚的场所&#xff0c;水电能源的高效管理对于降低运营成本、保障安全稳定供应以及推动可持续发展至关重要。校园水电能源智能化管理系统应运而生&#xff0c;通过先进技术的应用&#xff0c;实现了对校园水电资源的智能监控、计量和管理。本文将从系统背景、…

Elasticsearch:下载、启动和账号密码登录

因为我的电脑是 window&#xff0c;以下都是以 window 环境举例。 一、下载 Elasticsearch 是使用 java 开发的&#xff0c;且 7.8 版本的 ES 需要 JDK 版本 1.8 以上&#xff0c;安装前注意java环境的准备。 官网地址&#xff1a;https://www.elastic.co/cn/ 下载地址&#xf…

Gitlab相关,【推送项目】

推送现有文件夹 cd existing_folder git init git remote add origin git10.200.5.138:taps/archetech.git git add . git commit -m "Initial commit"git pull -u origin master另外 git branch -b new_branch //创建本地分支并切换 git branch //查看本地分支 …

最新可用免费云服务器推荐汇总

随着云计算技术的不断发展&#xff0c;越来越多的企业和个人开始关注并尝试使用云服务器。云服务器以其高度的灵活性、可扩展性和成本效益&#xff0c;成为了部署应用和存储数据的理想选择。本文将为大家汇总目前市场上最新可用的免费云服务器资源&#xff0c;帮助大家更好地了…

深入了解Java Stream中的distinct()方法:按一个或多个指定对象字段进行去重

深入了解Java Stream中的distinct()方法&#xff1a;按一个或多个指定对象字段进行去重 在Java编程中&#xff0c;Stream API为我们提供了丰富的操作方法来处理集合数据。其中&#xff0c;distinct()方法是一种常用的方法&#xff0c;用于去除Stream中的重复元素。然而&#x…

Linux基础|线程池Part.1|线程池的定义和运行逻辑

线程池的定义和运行逻辑 多线程的问题&#xff1a; 如果并发的线程数量很多&#xff0c;并且每个线程都是执行一个时间很短的任务就结束了&#xff0c;这样频繁创建线程就会大大降低系统的效率&#xff0c;因为频繁创建线程和销毁线程需要时间。 那么一个很自然的想法就出现了…

django.template.exceptions.TemplateDoesNotExist: bootstrap3/field.html

django使用xadmin时报错 1、报错原因 django.template.exceptions.TemplateDoesNotExist: bootstrap3/field.html2、原因 在django中使用xadmin时会报这个错,这是由于django高版本与xadmin不兼容导致的。 3、解决方案 导入库: pip install crispy_bootstrap3 -i https:…

蓝桥杯刷题-毕业旅行问题

731. 毕业旅行问题 - AcWing题库 /* 起点变为1 ~ n - 1号点&#xff0c;终点变为0号点 */ #include <bits/stdc.h>using namespace std; #define x first #define y second typedef long long LL; typedef pair<int , int> PII;const int N 10 , M (1 << …

AI音乐,8大变现方式——Suno:音乐版的ChatGPT - 第505篇

悟纤之歌 这是利用AI为自己制作的一首歌&#xff0c;如果你也感兴趣&#xff0c;可以花点时间阅读下本篇文章。 ​ 导读 随着新一代AI音乐创作工具Suno V3、Stable audio2.0、天工SkyMusic的发布&#xff0c;大家玩自创音乐歌曲&#xff0c;玩的不亦乐乎。而有创业头脑的朋友…

mysql 转pg 两者不同的地方

因项目数据库&#xff08;原来是MySQL&#xff09;要改成PostgreSQL。 项目里面的sql要做一些调整。 1&#xff0c;写法上的区别&#xff1a; 1&#xff0c;数据准备&#xff1a; 新建表格&#xff1a; CREATE TABLE property_config ( CODE VARCHAR(50) NULL…

【UE5.1】使用MySQL and MariaDB Integration插件——(4)修改、插入、删除数据

目录 效果 步骤 一、修改 二、插入、删除 在上一篇博客&#xff08;【UE5.1】使用MySQL and MariaDB Integration插件——&#xff08;3&#xff09;表格形式显示数据&#xff09;基础上继续实现修改、插入和删除数据库数据的功能 效果 修改数据&#xff1a; 插入数据&…

探索ChatGPT写作新视野

ChatGPT无限次数:点击直达 探索ChatGPT写作新视野 在当今信息爆炸的时代&#xff0c;人们对于文字内容的需求愈发增长&#xff0c;而人工智能技术的不断发展则为文本生成领域带来了全新的可能性。ChatGPT作为自然语言处理领域的顶尖技术之一&#xff0c;受到了广泛关注和应用。…

开发语言漫谈-python

python的语法和C完全不同&#xff0c;但是它也是C写的。也就是想成为高手&#xff0c;C是必备武功。不是每个人都想成为武林高手。所以客观上需要个简单上手开发效率高的语言&#xff0c;就这样python诞生了。python的发明人其实不喜欢蟒蛇&#xff0c;但是不知道为啥选这个名字…

java线程(1)

1、多线程启动 有两种启动方式 1、实现Runable接口 2、继承Thread类并且重写run&#xff08;&#xff09;方法 在执行进程中的任务才会产生线程&#xff0c;所以需要实现Runable接口并且重写run&#xff08;&#xff09;方法&#xff0c;然后将Runable的实现对象作为参数传…