udp协议下的socket函数

news2025/1/11 10:46:50

目录

1.网络协议

2.网络字节序

3.socket编译接口

4.sockaddr结构体

5.模拟实现

1.socket函数

2.bind函数(绑定)

1.讲解

1.如何快速的将 整数ip<->字符串

2.ip地址的注意事项

3.端口号的注意事项

3.recvfrom函数

4.sendto函数

5.代码呈现

6.运行结果

7.开放UDP端口

8.更加体验这个udp的网络协议


建议不懂网络基础知识的先看一下这篇:网络基础知识-CSDN博客

1.网络协议

1.认识TCP协议

(1)传输层协议(2)有连接(3)可靠传输(4)面向字节流

2.认识UDP协议

(1)传输层协议(2)无连接(3)不可靠传输(4)面向数据报

3.注意

上面的有无连接,就是传输层和应用层是否建立连接,TCP连接就是客服端要想服务器发起申请链接,然后才能发送,但是UDP不管你。注意,两个没有好坏之分,都是褒义词,就像金属属性有惰性程度。简历链接的成本也是很大的!

2.网络字节序

我们刚开始学习C语言时,不知道你们有没有了解过大小端存储,没有的可以了解一下。但是网络协议出现的肯定是比大小端出现的晚,并且但是大小端当时没有谁有明显的优势,所以也不好替代谁,那么在网络传输时就出现问题了。所以TCP/IP协议规定,网络数据流一律采用大端字节序,即低地址高字节。

当然C语言肯定会提供接口的,不需要我们自己传唤。

3.socket编译接口

这个先了解一下,具体的下面会说。

4.sockaddr结构体

注意上面函数有一个结构体sockaddr的,其实它是有三个结构体:

对应的套接字编程的种类:1.原始套接字编程--网络工具(一般是跳过传输层进行编译)2.网络套接字编程--用户间的网络通信3.域间套接字--同一个机器内。

但是为什么上面函数只用一个sockaddr,就是想将网络接口统一抽象化,因此传输类型必须是一样的。其实判断也是很简单的:

5.模拟实现

1.socket函数

domain就是上面sockaddr结构体的AF_INIT和AF_UNIX,type就是选择的upd协议:

返回值,如果失败返回-1:

2.bind函数(绑定)

1.讲解

sockfd就是socket的返回值大小,addr则是绑定的ip地址,端口号等等信息,addrlen就是sizeof(addr)就好了。

当然最重要就是初始化addr:

先看看该类型的成员吧:

1.如何快速的将 整数ip<->字符串

就是将四个值都存储下来,注意将字符串转ip时,这样用一下引用,就会很简便的求出uint32_t ip了。ip转字符串就正常来就好了。

2.ip地址的注意事项

假设我们绑定当前账户的ip地址,会出现什么情况呢?

首先:虚拟机中代码是可以运行的,但是云服务是禁止直接bind公网IP,因为什么呢?因为一台主机的ip地址可能不止一个,可能是多个,但是你但凡绑定后,别人法另一个ip地址,你就接受不到了!所以一般默认是"0.0.0.0"。

3.端口号的注意事项

后面输入的是绑定的端口号

[0,1023]是系统内定的端口号,一般都要有固定的应用层协议使用,http:80,https:443,  mysql:2206(特殊的)。所以一般设置大于1023的端口号!

可以通过netstate -naup来查看自己设定的ip和端口号。

3.recvfrom函数

作用:接受别人发送来的数据。

buf就是接受别人发来数据的缓冲区,len就是buffer的长度,flags默认为0就好了,下面两个就是接受方要知道是谁发来的数据,到时候好发送回给对方。

4.sendto函数

作用:发送给别人的函数

参数和上面的没什么区别了。

5.代码呈现

Makefile:

main.cc

UdpServer.hpp

UdpClient.cc

log.hpp

Linux命名管道-CSDN博客

我在这上面写过。

6.运行结果

7.开放UDP端口

一般人运行上面程序是不会成功的,因为我们没有开放端口号,所以链接不到主机上。

解决一:
在买的云服务器的安全组里开:

解决二:
由于我在xshell上面修改了tcp的端口,所以再在华为云上修改udp导致web无法同步到上面,所以只能在linux上直接改防火墙:

8.更加体验这个udp的网络协议

很多人感觉这个进程间通讯没什么区别,那么可以让你们体验一下网络间通讯:

将这个压缩到桌面上,发给你的好朋友。

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

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

相关文章

yolov5-7.0更改resnet主干网络

参考链接 ClearML教程:https://blog.csdn.net/qq_40243750/article/details/126445671 b站教学视频&#xff1a;https://www.bilibili.com/video/BV1Mx4y1A7jy/spm_id_from333.788&vd_sourceb52b79abfe565901e6969da2a1191407 开始 github地址:https://github.com/z106…

系统架构设计师【补充知识】: 应用数学 (核心总结)

一、 图论之最小生成树 (1)定义: 在连通的带权图的所有生成树中&#xff0c;权值和最小的那棵生成树(包含图中所有顶点的树)&#xff0c;称作最小生成树。 (2)针对问题: 带权图的最短路径问题。 (3)最小生成树的解法有普里姆(Prim)算法和克鲁斯卡尔(Kruskal)算法&#xff0c;我…

liquibase做数据库版本管理

通过这个配置就会自动启动liquibase 比对 https://www.cnblogs.com/ludangxin/p/16676701.html https://zhuyizhuo.github.io/2020/07/04/spring-boot/spring-boot-liquibase-database-version-control/

通过语言大模型来学习tensorflow框架训练模型(三)

一、模型训练5步骤走 1.数据获取&#xff0c;2&#xff0c;数据处理&#xff0c;3.模型创建与训练&#xff0c;4 模型测试与评估&#xff0c;5.模型预测 二、tensorflow数据获取 在TensorFlow中&#xff0c;数据获取和预处理是构建深度学习模型的重要步骤。TensorFlow提供了多…

wireshark抓包ssl数据出现ignored unknown record的原因

文章目录 前言一、出现原因二、wireshark抓包分析Ignored Unknown RecordTCP segment of a reassembled PDU 总结 前言 使用下面这个例子来观察记录层数据大于TCP MSS时用wireshark抓包出现ignored unknown record的情况并分析原因。 c语言利用openssl实现简单客户端和服务端&…

无公网IP与服务器完成企业微信网页应用开发远程调试详细流程

文章目录 前言1. Windows安装Cpolar2. 创建Cpolar域名3. 创建企业微信应用4. 定义回调本地接口5. 回调和可信域名接口校验6. 设置固定Cpolar域名7. 使用固定域名校验 前言 本文主要介绍如何在企业微信开发者中心通过使用内网穿透工具提供的公网域名成功验证回调本地接口服务! …

SpringBoot整合H2数据库并将其打包成jar包、转换成exe文件

SpringBoot整合H2数据库并将其打包成jar包、转换成exe文件 H2 是一个用 Java 开发的嵌入式数据库&#xff0c;它的主要特性使其成为嵌入式应用程序的理想选择。H2 仅是一个类库&#xff0c;可以直接嵌入到应用项目中&#xff0c;而无需独立安装客户端和服务器端。 常用开源数…

【因果推断python】31_合成控制1

目录 一个了解无从知晓事情的超酷数学技巧 我们有时间 一个了解无从知晓事情的超酷数学技巧 当我们审视双重差分法时&#xff0c;我们有来自 2 个不同城市的多个客户的数据&#xff1a;阿雷格里港和弗洛里亚诺波利斯。数据跨越 2 个不同的时间段&#xff1a;在阿雷格里港进行…

smart_rtmpd 的后台管理

高效的流媒体服务器 smart_rtmpd&#xff0c;您值得拥有 smart_rtmpd 的下载地址 https://github.com/superconvert/smart_rtmpd smart_rtmpd 的管理后台 https://github.com/superconvert/smart_rtmpd/edit/master/web%20manager/src/README.md web 管理后台说明 web 管理…

如何开发一个直播APP:功能介绍与开发步骤详解

随着移动互联网的迅猛发展&#xff0c;直播APP已经成为人们生活中不可或缺的一部分。无论是娱乐、教育、商业还是其他领域&#xff0c;直播APP都以其独特的实时互动性和广泛的受众群体而备受欢迎。那么&#xff0c;如何开发一个直播APP呢&#xff1f;本文将详细介绍直播APP的功…

视频监控汇聚平台:接入不同品牌的监控视频,同时把所有的监控视频接到不同的上级视频监控平台(第三方平台)

目录 一、需求描述 &#xff08;一&#xff09;总体描述 &#xff08;二&#xff09;前端接入 &#xff08;三&#xff09;向上级联 二、需求分析 &#xff08;一&#xff09;接入所有不同品牌、不同型号的监控视频 1、确认各品牌摄像头的接口类型和协议 2、选择合适的…

【Linux】易错点——/etc/passwd ; /etc/shadow;ifconfig;route;chmod;ps;mv

/etc/passwd ; /etc/shadow /etc/passwd&#xff1a; 用户账户的详细信息在此文件中更新。 用户名&#xff1a;密码&#xff1a;用户 ID&#xff1a;群组 ID&#xff1a;用户 ID 信息&#xff1a;用户的家目录&#xff1a; Shell /etc/shadow&#xff1a; 用户账户密码在此文…

VRRP跟踪接口及认证(华为)

#交换设备 VRRP跟踪接口及认证 一、相关概念 1.VRRP跟踪接口 当 VRRP 的 Master 设备的上行接口出现问题, 而 Master 设备一直保持 Active 状态&#xff0c;那么就会导致网络出现中断&#xff0c;所以必须要使得 VRRP 的运行状态和上行接口能够关联。在配置了 VRRP 元余的网…

Web应用安全测试-爆破猜解

Web应用安全测试-爆破猜解 邮件内容中请求链接可预测 漏洞描述&#xff1a;邮件中的重置密码等链接可预测&#xff0c;导致链接可以直接被猜解访问。 测试方法&#xff1a; 先按照正常流程重置密码&#xff0c;接收重置密码邮件&#xff0c;分析重置链接的构造。通常情况下…

Pygame常用模块

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 Pygame做游戏开发的优势在于不需要过多考虑与底层开发相关的内容&#xff0c;而可以把工作重心放在游戏逻辑上。例如&#xff0c;Pygame中集成了很多…

抖某音号解封释放实名

##抖音账号封禁后如何解封呢 我相信&#xff0c;做过抖音&#xff0c;或者正在做抖音的朋友&#xff0c;都曾面临一种尴尬至极的局面&#xff0c;辛辛苦苦做起来的账号&#xff0c;或者刚刚准备好的账号&#xff0c;在一时之间&#xff0c;竟然被抖音官方封禁了&#xff01; 实…

继承深度剖析

前言 从继承开始就开始C进阶了&#xff0c; 这一块需要好好学习&#xff0c;这块知识很重要&#xff0c; 坑有点多&#xff0c;所以是面试笔试的常客。 基本概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段&#xff0c; 它允许程序员在保持原有…

【C语言】12.指针与数组的关系

一、数组名的理解 #include <stdio.h> int main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10 };printf("&arr[0] %p\n", &arr[0]);printf("arr %p\n", arr);return 0; }通过上述代码输出结果我们发现结果相同&#xff0c;因此我们得出结论&a…

矩阵的掩膜操作

掩膜 矩阵上的掩码操作其实很简单&#xff0c;其思路是我们根据掩膜矩阵&#xff08;即内核&#xff09;重新计算图像中每个像素的值&#xff0c;此掩码保存的值将调整相邻像素(和当前像素)对新像素值的影响程度。从数学的角度来看&#xff0c;我们用我们指定的值做一个加权平…

最流行的后端框架:如何选择适合自己的框架

最流行的后端框架&#xff1a;如何选择适合自己的框架 在当今快节奏的数字环境中&#xff0c;软件开发需要高效、可扩展且可靠的解决方案。最流行的后端框架&#xff0c;这就是后端框架的用武之地。这些软件框架提供了构建 Web 应用程序的骨干&#xff0c;处理了从数据库交互到…