linux网络编程之UDP编程
linux网络编程之UDP编程
- UDP编程模型
- 服务端
- 客户端
- tcp与udp的区别
UDP编程模型
服务端
1.创建socket
2.构建服务器协议地址簇
3.绑定
4. 通信sendto(多了两个参数) == send + connect
#include <stdio.h>
#include <sys/types.h> /* See NOTES */
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <signal.h>
#include <arpa/inet.h>int main(){//1. 创建socket int serverFd = socket(AF_INET,SOCK_DGRAM,0);if(-1 == serverFd) printf("创建socket失败:%m\n"),exit(-1);printf("创建socket成功!\n"); //2. 构建服务器协议地址族 struct sockaddr_in addr = {0};addr.sin_family = AF_INET;//和socket函数第一个参数一致addr.sin_addr.s_addr = inet_addr("192.168.249.135");//把字符串转成整型addr.sin_port = htons(9999);//端口号 //3. 绑定int r = bind(serverFd,(struct sockaddr*)&addr,sizeof addr);if(-1 == r) printf("绑定失败:%m\n"),close(serverFd),exit(-1);printf("绑定成功!\n"); //4. 通信char buff[256];//用来存储客户端协议地址族struct sockaddr_in cAddr = {0};int cLen = sizeof cAddr;while(1){r = recvfrom(serverFd,buff,255,0,(struct sockaddr*)&cAddr,&cLen);//和read一样if(r>0){buff[r] = 0;//添加'\0'printf("客户端%s发来的数据>>%s\n",inet_ntoa(cAddr.sin_addr),buff);sendto(serverFd,"妖怪,吃俺老孙一棒",strlen("妖怪,吃俺老孙一棒"),0,(struct sockaddr*)&cAddr,sizeof cAddr);}}}
客户端
1.创建socket
2.获取服务器协议地址簇
3,通信
recvform(多了两个参数) == recv + accept
#include <stdio.h>
#include <sys/types.h> /* See NOTES */
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <signal.h>
#include <arpa/inet.h>int main(){//1. 创建socket int serverFd = socket(AF_INET,SOCK_DGRAM,0);if(-1 == serverFd) printf("创建socket失败:%m\n"),exit(-1);printf("创建socket成功!\n"); //2. 构建服务器协议地址族 struct sockaddr_in addr = {0};addr.sin_family = AF_INET;//和socket函数第一个参数一致addr.sin_addr.s_addr = inet_addr("192.168.249.135");//把字符串转成整型addr.sin_port = htons(9999);//端口号 //3. 通信char buff[256];int r;char temp[256];int len = sizeof addr;while(1){memset(buff,0,256);printf("请输入>>");scanf("%s",buff);r = sendto(serverFd,buff,strlen(buff),0,(struct sockaddr*)&addr,sizeof addr);printf("r:%d\n",r);r = recvfrom(serverFd,temp,255,0,(struct sockaddr*)&addr,&len);if(r > 0){temp[r] = 0;printf("服务器说:%s\n",temp);}}}
tcp与udp的区别
1.tcp有连接 udp没有连接
2.tcp数据流, udp数据报文
3. tcp 数据有边界 , udp数据无边界
4. tcp数据有序, udp数据无序
5.tcp安全 稳定 可靠 udp不安全
安全: 相对不容易被窃取
稳定:传输速率变化
可靠:是否一定能收到
6. tcp相对慢很多,udp传输速度快
7.tcp有中心(服务器) udp没有
相关文章:
linux网络编程之UDP编程
linux网络编程之UDP编程 UDP编程模型服务端客户端 tcp与udp的区别 UDP编程模型 服务端 1.创建socket 2.构建服务器协议地址簇 3.绑定 4. 通信 sendto(多了两个参数) send connect #include <stdio.h> #include <sys/types.h> /*…...
YB4556 28V、1A、单节、线性锂电池充电IC
YB4556 28V 、 1A 、单节、线性锂电池充电 IC 概述: YB4556H 是一款完整的采用恒定电流 / 恒定电压的高压、大电流、单节锂离子电池线性充电 IC。最高耐压可达 28V,6.5V 自动过压保护,充电电流可达 1A。由于采用了内部 PMOSFET 架构,加上防倒…...
基于单片机设计的大气气压检测装置(STC89C52+BMP180实现)
一、前言 本项目设计一个大气气压检测装置,该装置以单片机为基础,采用STC89C52作为核心控制芯片,结合BMP180模块作为气压传感器。大气气压,也就是由气体重力在大气层中产生的压力,其变化与天气预报、气象观测以及高度…...
【ChatGLM3-6B】Docker下部署及微调
【ChatGLM2-6B】小白入门及Docker下部署 注意:Docker基于镜像中网盘上上传的有已经做好的镜像,想要便捷使用的可以直接从Docker基于镜像安装看Docker从0安装前提下载启动访问 Docker基于镜像安装容器打包操作(生成镜像时使用的命令࿰…...
编程常见报错信息及解决方案汇总
编程常见报错信息及解决方案汇总 1.Java语言编程 1.1 jdk相关 Java API java8帮助文档 Java最新JDK和API下载(持续同步更新于官网) jdk1.8.0_212 全平台下载 官网下载JDK1.7的方法和步骤 力扣 (LeetCode) PTA题库 1.2 编程工具Eclipse Eclips…...
从Redis反序列化UserDetails对象异常后发现FastJson序列化的一些问题
最近在使用SpringSecurityJWT实现认证授权的时候,出现Redis在反序列化userDetails的异常。通过实践发现,使用不同的序列化方法和不同的fastJson版本,异常信息各不相同。所以特地记录了下来。 一、项目代码 先来看看我项目中redis相关配置信息…...
0001Java程序设计-springboot基于微信小程序批发零售业商品管理系统
文章目录 **摘 要****目录**系统实现开发环境 编程技术交流、源码分享、模板分享、网课分享 企鹅🐧裙:776871563 摘 要 本毕业设计的内容是设计并且实现一个基于微信小程序批发零售业商品管理系统。它是在Windows下,以MYSQL为数据库开发平台…...
中国防锈油市场深度调研与投资战略报告(2023版)
内容简介: 防锈油是在石油类基本组分中加入油溶性缓蚀剂及清净分散剂、抗氧抗腐剂、极压抗磨剂等辅助添加剂,多用于金属制品工序间、运输和贮存时的暂时防锈,是一种较理想、有效的防护方法,具有效果好、使用方便、成本低廉、易施…...
Linux C 基于tcp和epoll在线聊天室
基于tcp和epoll在线聊天室 说明服务端代码 说明 服务端:实现了验证用户是否已经存在(支持最大64用户连接)支持广播用户进入退出聊天室以及用户聊天内容。 这里只提供里服务端代码,如果想要看客户端代码点击这里。 服务端代码…...
为什么要隐藏id地址?使用IP代理技术可以实现吗?
随着网络技术的不断发展,越来越多的人开始意识到保护个人隐私的重要性。其中,隐藏自己的IP地址已经成为了一种常见的保护措施。那么,为什么要隐藏IP地址?使用IP代理技术可以实现吗?下面就一起来探讨这些问题。 首先&am…...
前端(HTML + CSS + JS)
文章目录 一、HTML1. 概念(1)HTML 文件基本结构(2)HTML代码框架 2. 、HTML常见标签 二、CSS1. CSS基本语法规范2. 用法(1) 引用方式(2)选择器(3)常用元素属性…...
12 要素 12 Factor
I. 基准代码 一份基准代码,多份部署 一个应用,一个基准代码git仓库,多个环境版本部署(prod,staging,develop) II. 依赖 显式声明依赖关系 docker的dockerfile,php的composer.jso…...
十大排序之冒泡排序与快速排序(详解)
文章目录 🐒个人主页🏅算法思维框架📖前言: 🎀冒泡排序 时间复杂度O(n^2)🎇1. 算法步骤思想🎇2.动画实现🎇 3.代码实现🎇4.代码优化(添加标志量) …...
【SpringBoot篇】阿里云OSS—存储文件的利器
文章目录 🌹什么是阿里云OSS⭐阿里云OSS的优点 🏳️🌈为什么要使用云服务OSS🎄使用步骤⭐OSS开通⭐参考官方SDK 🍔编写代码⭐上传文件 🌹综合案例 🌹什么是阿里云OSS 阿里云对象存储…...
Leetcode—58.最后一个单词的长度【简单】
2023每日刷题(四十) Leetcode—58.最后一个单词的长度 实现代码 int lengthOfLastWord(char* s) {int len strlen(s);int left 0, right 0;if(len 1) {return 1;}while(right < len) {if(right 1 < len) {if(s[right] && s[righ…...
Apach Ozone部署
前言 最近由于工作需要,要部署一套ozone。我自己对hadoop这套体系不是很熟悉,所以过程磕磕碰碰,好不容易勉强搭起来,所以记录一下部署方式 准备 三台主机,主机均已安装jdk、hdfs,相关的安装配置就不另外写…...
【nlp】3.2 Transformer论文复现:1. 输入部分(文本嵌入层和位置编码器)
Transformer论文复现:输入部分(文本嵌入层和位置编码器) 1 输入复现1.1 文本嵌入层1.1.1 文本嵌入层的作用1.1.2 文本嵌入层的代码实现1.1.3 文本嵌入层中的注意事项1.2 位置编码器1.2.1 位置编码器的作用1.2.2 位置编码器的代码实现1.2.3 位置编码器中的注意事项1 输入复现…...
自动化部署 / 扩容openGauss —— Ansible for openGauss
前言 大家好,今天我们为大家推荐一套基于 Ansible 开发的,自动化部署及扩容 openGauss 的脚本工具:Ansible for openGauss(以下简称 AFO)。 通过AFO,我们只需简单修改一些配置文件,即可快速部署…...
Go 实现网络代理
使用 Go 语言开发网络代理服务可以通过以下步骤完成。这里,我们将使用 golang.org/x/net/proxy 包来创建一个简单的 SOCKS5 代理服务作为示例。 步骤 1. 安装 golang.org/x/net/proxy 包 使用以下命令安装 golang.org/x/net 包,该包包含 proxy 子包&am…...
Redis报错:JedisConnectionException: Could not get a resource from the pool
1、问题描述: redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool 2、简要分析: redis.clients.util.Pool.getResource会从JedisPool实例池中返回一个可用的redis连接。分析源码可知JedisPool 继承了 r…...
通义千问VL-Reranker-8B效果展示:短视频创作平台脚本+分镜+成片排序
通义千问VL-Reranker-8B效果展示:短视频创作平台脚本分镜成片排序 你是不是也遇到过这样的烦恼?在短视频创作平台上,面对海量的用户投稿——从文字脚本、分镜草图到最终成片——想快速找到最符合主题、质量最高的内容,简直像大海…...
2026届必备的五大降重复率方案解析与推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在学术写作这个范畴里,重复率过高属于较为常见的一种状况。专门的降重网站具备提…...
【Java Loom响应式转型终极指南】:20年架构师亲测的5大避坑法则与性能跃迁实录
第一章:Java Loom响应式转型的底层逻辑与时代必然性在高并发、低延迟成为现代云原生服务标配的今天,传统基于线程池与回调链的异步编程模型正面临严峻挑战。Java Loom 并非一次简单的 API 增量更新,而是 JVM 运行时对“并发抽象”本质的重新定…...
微信消息自动转发终极指南:如何实现多群消息智能同步的完整教程
微信消息自动转发终极指南:如何实现多群消息智能同步的完整教程 【免费下载链接】wechat-forwarding 在微信群之间转发消息 项目地址: https://gitcode.com/gh_mirrors/we/wechat-forwarding 你是否曾经因为需要在多个微信群之间反复转发相同的信息而感到疲惫…...
手把手调试RK3588电源:当CPU变频失效时,如何排查DTS中的PMIC配置问题
RK3588电源调试实战:当DVFS失效时如何精准定位PMIC初始化问题 凌晨三点,实验室的咖啡机已经空了第三轮。盯着屏幕上/d/opp/opp_summary里空空如也的频率信息,我意识到这又是一个典型的RK3588电源初始化顺序问题。作为嵌入式工程师,…...
别再手动同步了!用Go-FastDFS搭建三节点Linux文件集群,附Nginx代理完整配置
三节点Go-FastDFS集群实战:告别手动同步的运维噩梦 凌晨三点,服务器报警声再次响起——又一台存储节点因磁盘写满而离线。这是本月第三次因单点故障导致文件同步中断,团队不得不连夜手动修复数据一致性。这种场景在中小型技术团队中屡见不鲜&…...
小猫爪:FreeRTOS浮点运算的隐形陷阱——configUSE_TASK_FPU_SUPPORT配置详解
1. 浮点运算的隐形陷阱:为什么你的FreeRTOS计算结果会出错 第一次在FreeRTOS环境下遇到浮点运算错误时,我盯着屏幕上那些明显不合理的计算结果,一度怀疑是不是自己熬夜太久产生了幻觉。特别是在使用Cortex-R5这类带FPU的处理器时,…...
【AI Agent工程实战系列⑤】多Agent系统:比单Agent难的不是技术而是协调
多Agent系统:比单Agent难的不是技术而是协调 AI Agent工程实战系列 第05篇 / 共10篇 Orchestrator模式、任务分解、冲突解决、结果聚合 以及为什么大多数多Agent系统最终退化成了单Agent 一个让我们返工三周的架构决策 去年我们给一个法律科技公司搭了一套合同审查系统。需求…...
手把手教你配置STM32 IAP跳转:从BootLoader关中断到APP开中断的完整流程
STM32 IAP跳转实战指南:从BootLoader到APP的中断管理全解析 引言 在嵌入式开发领域,IAP(In-Application Programming)技术为产品固件升级提供了极大便利,但其中的跳转过程却暗藏玄机。许多开发者第一次尝试实现STM32的…...
有限状态机(FSM)原理与应用实例解析
1. 有限状态机基础概念解析有限状态机(Finite State Machine,FSM)是描述离散动态系统的数学模型,它通过有限的状态集合和状态之间的转移来刻画系统行为。想象一下自动售货机的工作原理——它根据投币金额和用户选择,在…...
