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…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
