调试网络收发不通问题

今天在做之前一个项目重构的事情,需要把之前的代码重新做功能,我们有两个设备,他们通过网线连接,用UDP来传输数据。很多人都怀疑UDP丢包什么,不及时什么之类的,如果想把事情做得足够快,最好还是在UDP上做一些事情,对于丢包是有很多处理方式的。

ac8af1732eb771fe7b3cf5dcd79c88ad.png

然后,我在新代码的调试下,发现问题,A设备发送广播包给B设备发送不成功。简单的代码定位如下

#include <errno.h>
printf("%s(),LINE=%d,[%s]\n", __FUNCTION__, __LINE__, strerror(errno));

执行后看到输出

8557c7142c2a67897acf3cd87ceeaaac.png

我刚开始以为是端口的原因,然后检查了一下才发现,是因为我没有设置默认网关,我从网上看到这个图的。

744c07af1c6b62f336942c32d1c942e2.png

讲道理,我们的两个设备都不需要连接外网,所以是没有必要配置网关的,问题是出在,我的网络广播包发送的的是 "255.255.255.255"。

4420b38885907d10cac971d49704398e.png

在配置系统里面默认网关的目的,是告诉系统,当有些数据包不匹配路由表中其他任意路由,不知道怎么选路的时候,就把这个数据包丢给默认网关让它帮你转,所以,网关可以认为是网络的管家,当有人不知道做什么的时候,就需要网关来告诉他要做什么,要到哪里去。

1344f3966990b0d83a7bb7a7b2e2fd2f.png

23b90472c5d7c67ea97ca92462e0535c.png

在把网关配置正常后,设备可以正常收发数据。

但是我不想每次都配置一次网关,所以我就需要换一个广播地址,把广播的地址修改成"192.168.9.255"。

嗯,这样之后,发送就不会再提示有问题了。

但是接收数据没有看到有数据,崩溃~~~~

这个时候单播和两个设备互ping都是没有问题的。

730138d64f987d38d459e063a35a9122.png

然后检查两个设备的网络情况,如下

9ce85b70925a26b3a41b1e5514554cea.png

发现两个设备不在同一个网段下,so,我就怀疑我的服务可能写的有问题。

正常情况下,A设备通过DHCP从B设备获取IP,那B设备的DHCP服务配置就可能是很大的问题了,因为每次执行获取IP的命令后就发现我的子网掩码被修改了,那应该是DHCP服务搞的鬼。

然后去看DHCP服务的配置文件,发现配置文件写的有问题,配置文件没有让设备处在同一个子网掩码下。

错误的配置文件如下

a00a1eb3db7dad6216f8925c09551817.png

需要把opt subnet 配置成和IP地址同一个网段的地址。opt subnet 是子网掩码的计算工具,子网掩码就是通过这个计算出来的,我们子网掩码不正确也就是这个原因了。

最后,修改固件的配置文件重新烧录后验证正常。

网络是个很复杂的东西,搞网络的时候,我总是搞不懂MAC层是什么,PHY层是什么,为什么有了MAC层又多出来一个PHY层。

a19f61f019460d91dd59d8203097f236.png

说白了,这两个层都是硬件层,我们还可能遇到一些Switch加两个PHY,Switch可能很多人还不知道是什么东西,这无非就是高速开关,有多高速我也说不清楚,反正因为高速切换产生的温度是非常高的。

好了,就这样。感谢发哥又跟我调试了一天~谢谢发哥~

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

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

相关文章

VB6.0和VB.Net对照表

想在网上找一下VB.Net中&#xff0c;哪些是VB6.0遗留下来的东西&#xff0c;哪些是VB.Net增加的东西。结果中文的没有找到&#xff0c;找到了一个日文网页。简单的翻译了一下&#xff0c;放在这里&#xff0c;供需要的人参考。 VB6.0和VB.Net的对照表VB6.0VB.NETAddItem Object…

hibernate的初次使用

转载地址&#xff1a;http://blog.csdn.net/aboy123/article/details/10222675 一、Hibernate概述 &#xff08;一&#xff09;什么是Hibernate&#xff1f; hibernate核心内容是ORM&#xff08;关系对象模型&#xff09;。可以将对象自动的生成数据库中的信息&#xff0c;使…

linux 关联数组,linux 普通数组和关联数组

数组&#xff1a;就是借助索引将多个数据存储为一个集合。普通数组&#xff1a;数组的索引只能使用整数关联数组&#xff1a;数组的索引可以使用整数和字符串(要bash4.0以上的版本才支持关联数组)数组通常与循环或者其他判断式交互使用才有比较高的意义普通数组的定义array1(a …

layui之在table的编辑的按钮的思考

点编辑的时候&#xff0c;如果没有在html界面写form&#xff0c;而是在同级目录下写的 修改html的话呢&#xff0c; 就可以在点 编辑 按钮的时候&#xff0c;调用打开tab的方法&#xff0c;把form的html打开&#xff0c;而不用去后台转发转载于:https://www.cnblogs.com/fuckin…

删除rz上传失败乱码的文件

通过rz上传文件失败时&#xff0c;会产生大小为0的乱码的文件&#xff0c;如下 ls -l -rw-r–r– 1 root root 47031 12-15 13:48 ?ղ??.htm 这种类型的文件可用以下命令 find . -maxdepth 1 -size 0 | xargs rm -rf 说明&#xff1a;这种文件大小为0&#xff0c;并且在上…

我用过 | Keil的发展历史

Keil&#xff0c;相信搞嵌入式软硬件开发的读者都不陌生&#xff0c;在全球单片机&#xff08;MCU&#xff09;集成开发环境&#xff08;IDE&#xff09;中&#xff0c;可以说 Keil 占据了半壁江山。Keil 既是一家公司的名称&#xff0c;也是一款 IDE 软件。下面讲述一下 Keil …

C#实现简单WEB服务器

一、HTTP协议的作用原理WWW是以Internet作为传输媒介的一个应用系统&#xff0c;WWW网上最基本的传输单位是Web网页。WWW的工作基于客户机/服务器计算模型&#xff0c;由Web 浏览器(客户机)和Web服务器(服务器)构成&#xff0c;两者之间采用超文本传送协议&#xff08;HTTP&…

奥鹏C语言专科在线作业答案,电子科大12春《C语言(专科)》在线作业三

《C语言(专科)》在线作业三试卷总分&#xff1a;100 测试时间&#xff1a;-- 试卷得分&#xff1a;100单选题、单选题(共 20 道试题&#xff0c;共 100 分。) 得分&#xff1a;1001. 若有定义&#xff1a;intw[3][5];&#xff0c;则以下不能正确表示该数组元素…

理解Android Binder机制原理

原文地址&#xff1a; http://blog.csdn.net/universus/article/details/6211589 Binder是Android系统进程间通信&#xff08;IPC&#xff09;方式之一。Linux已经拥有的进程间通信IPC手段包括(Internet Process Connection)&#xff1a; 管道&#xff08;Pipe&#xff09;、信…

嵌入式算法-傅里叶变换算法

摘要&#xff1a;傅里叶变换的核心在于&#xff0c;“任何连续周期信号可以由一组适当的正弦曲线组合而成”&#xff0c;在这个基础上对信号的中特定频率的正弦波进行分解或者重组&#xff0c;基于频率方面分析波形。1、傅里叶变换的意义近似周期性的方波&#xff08;橙色&…

磁盘,硬盘,软盘,光盘的区别

计算机存储器分为两大类&#xff1a;内存存储器和外部存储器&#xff08;简称内存或内存条和外存&#xff09;。内存容量小&#xff0c;存取速度快&#xff0c;只能临时保存信息&#xff08;经cup处理后的数据&#xff09;&#xff0c;断电后信息就会消失。外存容量大&#xff…

Server 2008 R2 AD RMS完整部署:AD部署篇

在上一篇里我们完成了基本环境的准备&#xff0c;这一篇主要是讲AD的部署&#xff0c;完成之后我们需要把RMS服务器和两个客户端都加入到域中。好了废话就不说了&#xff0c;首先在我们创建的DC虚机上登录&#xff0c;并对计算机名称进行修改。 完成后先不要忙着重启&#xff0…

WIN2003设完C盘权限后终端连不上。

设完权限后不要马上重启&#xff0c;要先测试终端是否可以连接&#xff0c;否则出现以下的错误就麻烦了。事件类型: 错误事件来源: Userenv事件种类: 无事件 ID: 1500日期: 2006-7-5事件: 16:43:57用户: NT AUTHORITY\NETWORK SERVICE计算机: 描述:Windows 不能让您登录&…

简易电子钟c语言程序,(最新整理)基于51单片机的电子钟C语言程序

《(最新整理)基于51单片机的电子钟C语言程序》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《(最新整理)基于51单片机的电子钟C语言程序(9页珍藏版)》请在人人文库网上搜索。1、完整)基于51单片机的电子钟C语言程序(完整)基于51单片机的电子钟C语言程序编辑整理&…

Android启动后icon应用图标不能显示的可能问题

前几天写一个安卓小应用程序&#xff0c;在icon应用图标上我找了半天才找到一个比较满意的图片&#xff0c;但是部署到模拟器上图标却是安卓系统图标。 一开始我以为是模拟器的问题又用真机测试了一下&#xff0c;结果也是系统图标。以前遇到过这种情况&#xff0c;无非是手机…

推荐系列文章:《DotText源码阅读》

DotText源码阅读 作者&#xff1a;shanhe DotText源码阅读(0) DotText源码阅读(1)-调试 DotText源码阅读(2)-工程、数据库表结构 DotText源码阅读(3)-框架配置体系和反序列化 dotText源码阅读(4)--DTO和数据访问 dotText源码阅读(5)--URLreWrite和Handler DotText源码阅读(6) -…

2018-2019-1 20165219 实验三 实时系统

2018-2019-1 20165219 实验三 实时系统 任务一 实验要求 学习使用Linux命令wc(1) 基于Linux Socket程序设计实现wc&#xff08;1&#xff09;服务器(端口号是你学号的后6位)和客户端 客户端传一个文本文件给服务器 服务器返加文本文件中的单词数 客户端 #include<netinet/in…

音视频基础知识大全

今天跟几个朋友聊天&#xff0c;他们问我是不是在腾讯&#xff0c;在腾讯做什么&#xff1f;然后我就说了我做的事情&#xff0c;我说我在腾讯做音频方面的开发&#xff0c;对外的产品主要是腾讯会议。然后他我一个朋友就截图了他的腾讯会议的软件截图过来。音视频是一个很好玩…

读取config文件中的键值

新建个config文件 <?xml version"1.0" encoding"utf-8"?><!-- 注意: 除了手动编辑此文件以外&#xff0c;您还可以使用 Web 管理工具来 配置应用程序的设置。 可以使用 Visual Studio 中的“网站”->“Asp.Net 配置”选项。 设置…

单片机c语言pwm整流的程序,基于 单片机控制PWM整流电源的设计.doc

PAGE \* MERGEFORMAT II摘??? 要本文介绍了用PWM实现直流电机调整的基本方法。本文在给出直流电机调整和PWM实现方法的基础上,提供一种用单片机软件实现PWM调速的方法,以及直流电机调速的相关知识和PWM调整的基本原理和实现方法.介绍了基于MCS-51单片机用软件产生PWM信号的途…