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

【嵌入式-网络编程】vmware中使用UDP广播失败问题

问题描述:
自己在vmware中搭建了2台虚拟机,虚拟机A向虚拟机A和虚拟机B发送广播信息,接收端在虚拟机A和虚拟机B,这个时候,由于没配置sin.sin_addr.s_addr = htonl(INADDR_ANY);,而是配置的inet_pton(AF_INET, SERV_IP, &sin.sin_addr.s_addr);,导致虚拟机A的广播信号发出去了,但是虚拟机B和虚拟机A完全收不到UDP广播数据。

要点:

  1. 在发送端配置
    // 设置允许广播数据
    int b_br = 1;
    setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST, &b_br, sizeof(int));
  2. 在接收端配置
    sin.sin_addr.s_addr = htonl(INADDR_ANY);绑定到任意接口
// receive.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/ip.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <unistd.h>#define SERV_PORT 5001
#define SERV_IP "192.168.32.133"int main(int argc, char *argv[])
{int sockfd;struct sockaddr_in sin;struct in_addr sinp;char buf[BUFSIZ];// 1. 创建socketif((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0){perror("socket");exit(1);}//	int b_br = 1;
//	setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST, &b_br, sizeof(int));// 2. 绑定服务器sin.sin_family = AF_INET;sin.sin_port = htons(SERV_PORT);// inet_pton(AF_INET, SERV_IP, &sin.sin_addr.s_addr);sin.sin_addr.s_addr = htonl(INADDR_ANY);bzero(sin.sin_zero, 8);if(bind(sockfd, (struct sockaddr *)&sin, sizeof(sin)) < 0){perror("bind");exit(1);}// 3. 从客户端接收while(1){int recvlen = -1;struct sockaddr_in srcaddrin;char srcaddr[16];int port = -1, addrlen;recvlen = recvfrom(sockfd, buf, BUFSIZ, 0, (struct sockaddr*)&srcaddrin, &addrlen);inet_ntop(AF_INET, &srcaddrin.sin_addr.s_addr, srcaddr, sizeof(srcaddrin));port = ntohs(srcaddrin.sin_port);if(recvlen == 0) printf("Client (%s:%d) is orderly shutdown\n", srcaddr, port);else if(recvlen < 0){perror("recvfrom");break;}else {// 接收到recvlen个数据if(strncasecmp("quit", buf, 4) == 0) break;printf("Client (%s:%d) recv data len=%d, addrlen=%d from client: %s\n", srcaddr, port, recvlen, addrlen, buf);}}// 4. 处理业务// 5. 发送数据close(sockfd);return 0;
}
// sender.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/ip.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <unistd.h>#define SERV_PORT 5001
#define SERV_IP "192.168.32.255"int main(int argc, char *argv[])
{int sockfd;struct sockaddr_in sin;struct in_addr sinp;char buf[BUFSIZ];// 1. 创建socketif((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0){perror("socket");exit(1);}// 设置允许广播数据int b_br = 1;setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST, &b_br, sizeof(int));// 2. 发送消息sendtosin.sin_family = AF_INET;sin.sin_port = htons(SERV_PORT);inet_pton(AF_INET, SERV_IP, &sin.sin_addr.s_addr);bzero(sin.sin_zero, 8);while(1){if(fgets(buf, BUFSIZ, stdin) == NULL){perror("fgets");continue;}sendto(sockfd, buf, BUFSIZ, 0, (struct sockaddr *)&sin, sizeof(sin));if(strncasecmp("quit", buf, 4) == 0) break;}close(sockfd);return 0;
}

相关文章:

【嵌入式-网络编程】vmware中使用UDP广播失败问题

问题描述&#xff1a; 自己在vmware中搭建了2台虚拟机&#xff0c;虚拟机A向虚拟机A和虚拟机B发送广播信息&#xff0c;接收端在虚拟机A和虚拟机B&#xff0c;这个时候&#xff0c;由于没配置sin.sin_addr.s_addr htonl(INADDR_ANY);&#xff0c;而是配置的inet_pton(AF_INET,…...

2020年认证杯SPSSPRO杯数学建模D题(第二阶段)让电脑桌面飞起来全过程文档及程序

2020年认证杯SPSSPRO杯数学建模 D题 让电脑桌面飞起来 原题再现&#xff1a; 对于一些必须每天使用电脑工作的白领来说&#xff0c;电脑桌面有着非常特殊的意义&#xff0c;通常一些频繁使用或者比较重要的图标会一直保留在桌面上&#xff0c;但是随着时间的推移&#xff0c;…...

vue3 修饰符大全(近万字长文)

系列文章目录 TypeScript 从入门到进阶专栏 文章目录 系列文章目录前言一、事件修饰符&#xff08;Event Modifiers&#xff09;1、.stop&#xff08;阻止事件冒泡&#xff09;2、.prevent&#xff08;阻止事件的默认行为&#xff09;3、.capture&#xff08;使用事件捕获模式…...

HarmonyOS@State装饰器:组件内状态

State装饰器&#xff1a;组件内状态 State装饰的变量&#xff0c;或称为状态变量&#xff0c;一旦变量拥有了状态属性&#xff0c;就和自定义组件的渲染绑定起来。当状态改变时&#xff0c;UI会发生对应的渲染改变。 在状态变量相关装饰器中&#xff0c;State是最基础的&…...

如何让GPT支持中文

上一篇已经讲解了如何构建自己的私人GPT&#xff0c;这一篇主要讲如何让GPT支持中文。 privateGPT 本地部署目前只支持基于llama.cpp 的 gguf格式模型&#xff0c;GGUF 是 llama.cpp 团队于 2023 年 8 月 21 日推出的一种新格式。它是 GGML 的替代品&#xff0c;llama.cpp 不再…...

使用开源通义千问模型(Qwen)搭建自己的大模型服务

目标 1、使用开源的大模型服务搭建属于自己的模型服务&#xff1b; 2、调优自己的大模型&#xff1b; 选型 采用通义千问模型&#xff0c;https://github.com/QwenLM/Qwen 步骤 1、下载模型文件 开源模型库&#xff1a;https://www.modelscope.cn/models mkdir -p /data/…...

Java工程师面试题解析与深度探讨

Java工程师面试题解析与深度探讨 第一部分&#xff1a;引言 Java作为一门广泛应用的编程语言&#xff0c;拥有庞大的生态系统&#xff0c;Java工程师因此成为众多企业追逐的目标。而在Java工程师的招聘中&#xff0c;面试是了解候选人技能和经验的核心环节。本文将深入探讨一…...

Linux下安装JET2

0. 说明&#xff1a; JET2是一个基于Joint Evolutionary Trees的利用序列和结构信息预测蛋白质界面的软件&#xff0c;详情见: http://www.lcqb.upmc.fr/JET2/JET2.html&#xff0c;http://www.lgm.upmc.fr/JET/JET.html 和 https://doi.org/10.1371/journal.pcbi.1004580 本…...

【PostgreSQL】表管理-表继承

PostgreSQL 表继承 PostgreSQL 实现了表继承&#xff0c;这对于数据库设计人员来说是一个有用的工具。&#xff08;SQL&#xff1a;1999 及更高版本定义了类型继承功能&#xff0c;该功能在许多方面与此处描述的功能不同。 让我们从一个例子开始&#xff1a;假设我们正在尝试…...

Dijkstra算法——邻接矩阵实现+路径记录

本文是在下面这篇文章的基础上做了一些补充&#xff0c;增加了路径记录的功能。具体Dijkstra的实现过程可以参考下面的这篇文章。 [jarvan&#xff1a;Dijkstra算法详解 通俗易懂](Dijkstra算法详解 通俗易懂 - jarvan的文章 - 知乎 https://zhuanlan.zhihu.com/p/338414118) …...

Vim基础操作

参考B站UP&#xff1a;正月点灯笼 vim入门教程&#xff08;共3讲&#xff09; 以下总结&#xff0c;部分搬运自评论区&#xff0c;楼主&#xff1a;-不是飞鱼QAQ&#xff0c;修改部分内容。 vim分为 命令 和 编辑 模式 i进入编辑模式&#xff08; - - INSERT - - &#xff09;…...

Mac上安装 Node.js 的版本管理工具 n,以及 n 使用,的使用

安装 最近刚更换 Mac 本进行项目的开发&#xff0c;刚上手 Mac 本还不是很熟练&#xff0c;需要安装 Node.js 的包管理工具 在 Windows 上我是实用的 nvm 来管理的 Node 版本&#xff0c;但是我尝试下载 Nvm &#xff0c;发现下载安装后的 Nvm 无法使用&#xff0c;提示 “Th…...

Node.js和npm

目录 01_Node.js01.什么是 Node.js目标讲解小结 02.fs模块-读写文件目标讲解小结 03.path模块-路径处理目标讲解小结 04.案例-压缩前端html目标讲解小结 05.认识URL中的端口号目标讲解小结 06.http模块-创建Web服务目标讲解小结 07.案例-浏览时钟目标讲解小结 02_Node.js模块化…...

leetcode每日一题43

116. 填充每个节点的下一个右侧节点指针 层序遍历嘛 /* // Definition for a Node. class Node { public:int val;Node* left;Node* right;Node* next;Node() : val(0), left(NULL), right(NULL), next(NULL) {}Node(int _val) : val(_val), left(NULL), right(NULL), next(N…...

每天刷两道题——第十天

1.1和为k的子数组 给你一个整数数组 n u m s nums nums 和一个整数 k k k &#xff0c;请你统计并返回 该数组中和为 k k k 的子数组的个数 。子数组是数组中元素的连续非空序列。 输入&#xff1a;nums [1,2,3], k 3 输出&#xff1a;2 前缀和 1.2如何使用 前缀和的…...

C语言入门教程,C语言学习教程(第一部分:编程基础 )一

C语言是一门面向过程的编译型语言&#xff0c;它的运行速度极快&#xff0c;仅次于汇编语言。C语言是计算机产业的核心语言&#xff0c;操作系统、硬件驱动、关键组件、数据库等都离不开C语言&#xff1b;不学习C语言&#xff0c;就不能了解计算机底层。 这套「C语言入门教程」…...

uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -用户信息修改实现

锋哥原创的uniapp微信小程序投票系统实战&#xff1a; uniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )共计21条视频…...

C语言PDF编程书籍下载

[C.Primer.Plus&#xff08;第6版&#xff09;中文版].&#xff08;美&#xff09;普拉达.扫描版.pdf 链接: https://pan.baidu.com/s/1difCyykkBdLqgLu32PgYLw 密码: tv05 C语言程序设计教程_基于Visual.Cpp.6.0环境.pdf 链接: https://pan.baidu.com/s/1q3nRrRJyUd4H3Yp_PgA…...

VScode/Xshell连接学校服务器

vscode连学校服务器 1.连接atrust VPN2.Xshell连接服务器2.1创建一个自己的用户 3.xftp传文件4.vscode连接服务器4.1下载remote-ssh4.2连接服务器4.3激活conda环境4.4运行代码 5. pytorch版本不兼容解决方案 1.连接atrust VPN 如果是使用的是校园网&#xff0c;可以不连接 2…...

46 WAF绕过-信息收集之反爬虫延时代理池技术

目录 简要本章具体内容和安排缘由简要本课具体内容和讲课思路简要本课简要知识点和具体说明演示案例:Safedog-默认拦截机制分析绕过-未开CCSafedog-默认拦截机制分析绕过-开启CC总结&#xff1a; Aliyun_os-默认拦截机制分析绕过-简要界面BT(防火墙插件)-默认拦截机制分析绕过-…...

[Markdown] Markdown常用快捷键分类汇总

文章目录 Markdown1、标题2、列表3、强调4、链接和图片5、代码和公式6、表格和任务列表7、引用8、分割线9、脚注10、目录11、注释12、定义 Markdown Markdown是一种轻量级的标记语言&#xff0c;可以让你用简单的语法来编写格式丰富的文档。 Markdown编辑器是一种专门用于编辑…...

uniapp自定义封装只有时分秒的组件,时分秒范围选择

说实话&#xff0c;uniapp和uview的关于只有时分秒的组件实在是不行。全是日历&#xff0c;但是实际根本就不需要日历这玩意。百度了下&#xff0c;终于看到了一个只有时分秒的组件。原地址&#xff1a;原地址&#xff0c;如若侵犯请联系我删除 <template><view clas…...

SpringBoot 中 @Transactional 注解的使用

一、基本介绍 事务管理是应用系统开发中必不可少的一部分。Spring 为事务管理提供了丰富的功能支持。Spring 事务管理分为编程式和声明式的两种方式。本篇只说明声明式注解。 1、在 spring 项目中, Transactional 注解默认会回滚运行时异常及其子类&#xff0c;其它范…...

【还不了解 Dockerfile 的同学不是好测试人】

近年来 Docker 非常火&#xff0c;想要玩好 Docker 的话 Dockerfile 是绕不开的&#xff0c;这就好比想要玩好 Linux 服务器绕不开 shell 道理是一样的。 今天我们就来聊一聊 Dockerfile 怎么写&#xff0c;那些指令到底是什么意思。 前言 一、先来看一个简单的 Dockerfile #这…...

新手一键重装系统Win10步骤教程

如果我们发现电脑上的操作系统出现很严重的问题&#xff0c;不能通过简单的操作解决&#xff0c;这时候就可以选择重新安装电脑系统&#xff0c;快速解决问题。但是&#xff0c;新手用户不具备专业的装机知识&#xff0c;不知道重装Win10系统要怎么操作&#xff1f;那么可以按照…...

Ceph源码分析-在C++中,符号““和“*“有不同的用法。

在C中&#xff0c;符号"&"和"*"有不同的用法。 "&"符号&#xff1a; 在变量声明时&#xff0c;"&"用于定义引用类型。例如&#xff1a;int a 10; int& ref a; 这里的"ref"是一个引用&#xff0c;它引用了…...

Azure AI 内容安全Content Safety Studio实战

Azure AI Content Safety 检测应用程序和服务中用户生成和 AI 生成的有害内容。 Azure AI 内容安全包括文本和图像 API&#xff0c;可用于检测有害材料。 交互式 Content Safety Studio&#xff0c;可用于查看、浏览和试用用于检测不同形式的有害内容的示例代码。 关注TechLead…...

计算机网络学习笔记(四)

文章目录 1.介绍一下HTTPS的流程。2.介绍一下HTTP的失败码。3.说一说你知道的http状态码。4. 301和302有什么区别&#xff1f;5.302和304有什么区别&#xff1f;6. 请描述一次完整的HTTP请求的过程。7.什么是重定向&#xff1f;8. 重定向和请求转发有什么区别&#xff1f;9.介绍…...

typora导出html添加目录

typora导出html添加目录 使用方法 首先要从typora导出html文件&#xff0c;之后用记事本编辑器html文件 找到文档最后面&#xff0c;如图&#xff1a; 用文字编辑类工具打开sideBar.txt&#xff0c;复制其中所有内容【内容在下面】 在如上图的位置插入所复制的内容 打开修改…...

vue3 封装一个按钮组件(可自定义按钮样式)

效果图 鼠标悬浮有对应的文字提示&#xff0c;且图标出现背景色和颜色 实现 目前提供五个固定样式的图标及三个用户自定义的图标&#xff0c;可根据需要补充 组件代码 <script setup lang"ts"> import { onMounted, PropType, reactive, ref, watch } from v…...

java做教程网站/免费个人博客网站

第1关:Hyperledger Fabric 基本概念 任务描述 本关任务:根据本实训的相关知识,完成与 Hyperledger Fabric 基本概念相关的选择题。 相关知识 超级账本介绍 超级账本,即 Hyperledger,是区块链技术中第一个面向企业级应用场景的开源分布式账本平台。 2015年12月由 Linux …...

做网站字体用什么格式/短视频推广引流方案

原文&#xff1a;https://www.php.cn/faq/465621.html计算机机器数的三种表示方法是原码、反码和补码&#xff1b;机器数是将符号“数字化”的数&#xff0c;是数字在计算机中的二进制表示形式&#xff1b;机器数有2个特点&#xff0c;分别是符号数字化和其数的大小受机器字长的…...

自己的网站如何做快照劫持/优化搜狗排名

本文讲的是一个懒惰CIO的心声&#xff1a;IT要耐骂会沟通,台湾中国医药大学附属医院信息室主任杨荣林&#xff0c;以在医疗业从事信息工作27年的经验指出&#xff0c;沟通和重视实务的重要性。 “懒惰”的入行 “或许是我懒惰吧&#xff01;当初学长找我到医院担任信息人员&…...

余姚网站建设哪家好/公司网站建设步骤

1 新建 项目右键-->Dynamic web project动态WEB项目 2 在新建项目上面 3 转载于:https://www.cnblogs.com/cici-new/archive/2013/05/14/3078082.html...

协会网站设计方案/互联网营销推广

为什么80%的码农都做不了架构师&#xff1f;>>> 进度类计算 项目进度网络图 ----展示项目各计划活动、持续时间、逻辑关系的图形 双代号网络图&#xff08;箭线型&#xff09; ----用一个箭线表示一项活动&#xff0c;活动名称写在箭线上&#xff0c;箭线同时表示…...

app开发制作全过程/武汉seo网站推广

持续集成和持续交付文档我们&#xff08;程序员&#xff09;有文档在耳边。 建筑文档&#xff0c;设计文档&#xff0c;用户指南&#xff0c;功能规范&#xff0c;程序规范等等。 大多数文档比没用的文档更糟糕&#xff0c;因为它给人一种幻想&#xff0c;即所有内容都被记录下…...