随笔 - 356  文章 - 19  评论 - 89  阅读 - 235万
 
摘要: 一般情况下信号槽直接连接方式不会出现问题,但是如果信号与槽在不同线程或Qt::QueuedConnection方式连接,可能会在连接期间报以下类似问题,如: QObject::connect: Cannot queue arguments of type 'ThreadSignal' (Make s 阅读全文
posted @ 2017-02-21 09:53 苦涩的茶 阅读(5970) 评论(0) 推荐(0) 编辑
  2023年7月10日

路由器的桥接功能一般应用在家用中较多,而静态路由的配置确是在项目中经常会应用,主要可以解决两个不同网段路由器的互访,具体的配置有一些朋友有些疑问,今天我们一起来看下。

这里面我们通过三个类似的例子来了解这个知识。

案例1、什么是静态路由

关于静态路由,这个我们前几天的文章中有提到过,这里来简单回顾下。

一台路由器连接另外一台路由器,这两台路由器分别连接不同的网段,那么如果要这两个网段互通,则必须配置路由,这个就是静态路由。

例如:

A路由wan口192.168.0.1 255.255.255.0,lan口192.168.1.1 255.255.255.0

B路由wan口192.168.1.2 255.255.255.0,lan口192.168.2.1 255.255.255.0

A路由器下面的lan口上接了B路由器。

A路由要想访问B路由下面lan口的电脑,也就是访问192.168.2.0这个ip段,就需要添加一条为192.168.2.0 255.255.255.0 192.168.1.2的静态路由,分别是目的地址,子网掩码,对方路由网关。

可能还不是很了解,我们再来看下面这个例子。

案例2、如何配置静态路由

企业通过一台路由器R1上网,局域网LAN1,。因为业务需要,扩充了一台路由器R2,加入一个新的局域网段LAN2。

要使能PC1和PC2相互通讯,可以做如下图中所说的设置。

要实现pc1和pc2相互通信如可做如下设置:

1、pc1的的网关指向R1 LAN

2、pc2的网关指向R2的LAN口

3、R2的WAN口网关指向R1 LAN口

4、在R1上指定一条静态路由,使目的ip为192.168.1.x网段的ip转发到R2。

这里面R1静态路由配置单独说明下:一条静态路由一般由三部分组成,

目的IP地址、子网掩码、下一跳(网关)地址,按照上图的分析,新建一条静态路由所包含的信息,应该有如下内容,发往目的地址192.168.1.0网段的IP包(子网掩码为255.255.255.0)的下一跳地址为192.168.0.100.具体配置位置,如果是在路由器中,以TP-Link的为例子,在路由器配置界面,有静态路由表配置:

在设置静态路由时,网关IP必须是与本路由器LAN口IP属于同一个网段。

如果目的IP地址是一台主机的IP地址,则子网掩码必须为255.255.255.255

如果是在服务器上,可以通过命令行来配置静态路由,包括添加、删除和修改。

 案例3、再解静态路由配置

例如下面两个网段。

PC A: 192.168.0.165 255.255.255.0

PC B:192.168.0.148 255.255.255.0

 

如上图,A和B分属不同网段,此种情况B可ping通A,但A不可以ping B。因为B的IP经过路由器NAT(网络地址转换)后,对外显示的是192.168.0.148,A并不知道有B的存在。

那么A如何能ping通B呢?

若想让A也能ping B,需要告诉A电脑路由该怎么走,在A电脑上加一条静态路由:

在dos下输入以下指令:

route -p add 目的地址 mask 子网掩码 网关地址

它的意思是,要想找到“目的地址”,就要通过“网关地址”里面找。-p是永久有效的意思。

所以,对应到上面的例子,指令应该这么写:

route -p add 192.168.19.0 mask 255.255.255.0 192.168.0.148。

其中192.168.19.0的意思是对192.168.19网段下所有ip均有效,这样A就可以可以ping通B了。

添加完毕后可用 route print 查看是否添加成功。(注意在win10下要以管理员身份运行dos才可添加)。

转自:https://baijiahao.baidu.com/s?id=1668291056220994279&wfr=spider&for=pc

案例4:

小区共享性宽带接入,A用户用一台宽带路由器构建了一个局域网,B用户也用一台宽带路由器构建局域网,A、B用户各自局域网之间的主机不能相互通讯。网络拓扑如下:

 

 

要想实现PC2和PC1之间的互相访问,看起来与情况1有些相似,需要在内网网关中添加两条静态路由。一般的小区网关肯定是不会随便让用户配置路由的,而且这样配置后,其他网段的电脑也可以访问PC1和PC2。

两台路由器,不同网段互访设置方法:

把两个路由器的WAN口设置到一个子网,如上图:

路由器1 WAN口ip:10.1.1.3
路由器2 WAN口ip:10.1.1.2
两个路由器的LAN口可以随便设,只要不跟WAN口在一个子网即可。

案例5:

上面我们案例2与案例4都是针对两个路由器的,那么对于有多个路由器,网络中有多级路由设备的环境,这种情况可以说是情景2和情景4的整合。

类似的网络拓扑如下:三台路由器

 

 

要实现PC1、PC2和PC3之间的互访,那么就需要配置路由器1与路由器3需要配置静态路由了,那么该如何配呢?

其实就是把上面案例2与案例4的情况整合了,就是案例3了。

分析:(这里面路由器用R来表示)

R1在R2与R3中间,R1本身连接pc2,那么要实现pc2与pc1、pc3互访,那么R1的目的地址就是pc1与pc3。

而R1的下一跳就是R2与R3,R2的WAN口与R1的LAN口相连接,所以R1的LAN口地址与R2的WAN口地址在同一网段,R1的WAN口地址与R3的WAN口在同一网段。

所以R1:

目的地址为192.168.1.0,掩码255.255.255.0,下一跳(网关)为192.168.0.100

目的地址为172.16.0.0,掩码255.255.0.0,下一跳(网关)为10.1.1.3

所以R3:

目的地址为192.168.0.0,掩码255.255.255.0,下一跳为10.1.1.2

目的地址为192.168.1.0,掩码255.255.255.0,下一跳为10.1.1.2

如果上面不理解,可以换个角度来看:

对于路由器R3来看,它只能看到R1,而看不到R2,所以R3来说,上面R1与R2两条路由,可以汇总会一条,就是

目的地址为192.168.0.0,掩码为255.255.0.0,下一跳为10.1.1.2,这个网段包含了192.168.0.0~192.168.255.0所有的子网,也包括了R1与R2,这条静态路由会使所有目的IP在这个范围内的信息包,都转发给10.1.1.2路由器R1,这种,将多条子路由条目汇总成一条都包含在内的总路由条目,叫做路由汇总

网络中为什么要把子网掩码写精确

在大型路由器上,路由表往往很长很大,采用路由汇总可以减少路由表的长度,提高路由器效率。

当然路由汇总也不总是有效的,因为子网的划分是人为的,路由汇总中的其他网段可能存在其他局域网下,贸然汇可能会出错,所以我们在实际项目要把子网掩码计算得很精确,这也就是为什么弱电君之前一直不建议我们设置B类网址是直接把子网掩码写255.255.0.0。上述例子3中的路由汇总可以设置精更加精确,对于192.168.0.0和192.168.1.0,网络位相同的位数有前23位,要可以通过掩码来区分这两个网段的话,需要将掩码设置为255.255.254.0,而不建议设置成255.255.0.0,这条改进的汇总路由表应该写成这样:目的地址为192.168.0.0,子网掩码为255.255.254.0,下一跳为10.1.1.2,这条汇总路由,只会包含192.168.0.0和192.168.0.1两个子网,这才是一条精确路由。这样有助于网络以后的扩展和维护。

转自:https://zhuanlan.zhihu.com/p/85129768

posted @ 2023-07-10 17:14 苦涩的茶 阅读(7229) 评论(0) 推荐(0) 编辑
  2023年6月5日
摘要: lubuntu 是个轻量级的发行版本,非常简洁!值得一试!好吧,上主题,设置自动登录(两步): 1. /etc/lxdm/default.conf sudo vi /etc/lxdm/default.conf autologin=username 2./etc/lightdm/lightdm.con 阅读全文
posted @ 2023-06-05 15:10 苦涩的茶 阅读(601) 评论(0) 推荐(0) 编辑
  2022年9月2日
摘要: nm命令用于将二进制文件或可执行文件(尤其是动态库)进行剖析 常用参数 1 // 可以直接man 2 -A 或-o或 --print-file-name:打印出每个符号属于的文件 3 -a或--debug-syms:打印出所有符号,包括debug符号 4 -B:BSD码显示 5 -C或--deman 阅读全文
posted @ 2022-09-02 12:45 苦涩的茶 阅读(1691) 评论(0) 推荐(0) 编辑
  2022年7月22日
摘要: 由于老的程序还在ubuntu12.04上编译使用,但是12的源已经很难找,故升级系统到ubuntu14.04 32位。 编译安装Qt4.8.7,安装QtCreator2.8.1配置完成后,发现gdb调试无法显示局部变量和表达式,查找、参照了各种方法,都失败。最后受到几篇关于gcc和gdb版本不兼容的 阅读全文
posted @ 2022-07-22 12:31 苦涩的茶 阅读(361) 评论(0) 推荐(0) 编辑
  2022年7月17日
摘要: 一、介绍什么是qdoc Qdoc是开发者用于在软件工程中生成文档的一个工具。它从工程的源文件中提取qdoc类型注释,并以html页面或者DITA XML文档的形式格式化到文件中。Qdoc在.cpp和.qdoc文件中查找注释,而不会在.h文件中查找。一条qdoc注释往往以一个前置声明符号(!)开始。 阅读全文
posted @ 2022-07-17 15:12 苦涩的茶 阅读(1604) 评论(0) 推荐(1) 编辑
  2022年6月20日
摘要: 背景 如何将程序依赖的动态库拷贝到指定的目录? 例子 1、通过LDD查看依赖的动态库。 # ldd postgres linux-vdso.so.1 => (0x00007ffcfc324000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f 阅读全文
posted @ 2022-06-20 10:23 苦涩的茶 阅读(3892) 评论(0) 推荐(0) 编辑
  2022年6月8日
摘要: 1. 正向代理 正向代理隐藏真实客户端 正向代理,就是一个位于客户端和原始服务器之前的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并且指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端,客户端才能使用正向代理。 比如我们要去访问某个网站,我们直接访问不通,那 阅读全文
posted @ 2022-06-08 16:38 苦涩的茶 阅读(430) 评论(0) 推荐(1) 编辑
  2022年6月1日
摘要: 目前 Linux 下最常用的 C 语言编译器是 GCC ( GNU Compiler Collection ),它是 GNU 项目中符合 ANSI C 标准的编译系统,能够编译用 C 、 C++ 和 Object C 等语言编写的程序。 GCC 不仅功能非常强大,结构也异常灵活。最值得称道的一点就是 阅读全文
posted @ 2022-06-01 17:39 苦涩的茶 阅读(1228) 评论(0) 推荐(0) 编辑
  2022年5月11日
摘要: 查看PATH:echo $PATH以添加mongodb server为列修改方法一:export PATH=/usr/local/mongodb/bin:$PATH//配置完后可以通过echo $PATH查看配置结果。生效方法:立即生效有效期限:临时改变,只能在当前的终端窗口中有效,当前窗口关闭后就 阅读全文
posted @ 2022-05-11 14:54 苦涩的茶 阅读(1087) 评论(0) 推荐(0) 编辑
  2022年4月26日
摘要: 在调试vlc-qt的examples工程时,遇到编译报错“QWidget: Must construct a QApplication before a QWidget” 根据字面理解应该是,创建窗体前应该必须先构造一个QApplication。网上很多人也遇到过这样的问题,也确实是这个原因,如下: 阅读全文
posted @ 2022-04-26 11:13 苦涩的茶 阅读(3068) 评论(0) 推荐(0) 编辑
  2021年11月26日
摘要: 1、linux系统环境下makefile转pro 在已有项目的目录(makefile目录所在)中 /home/dev/Qtxxx/xxx/gcc_64/bin/qmake -project 会生成一个.pro文件 然后就可以在qt creator中打开了 (PS:创建的工程不是根据makefile创 阅读全文
posted @ 2021-11-26 11:02 苦涩的茶 阅读(2070) 评论(0) 推荐(0) 编辑
  2021年10月11日
摘要: 前言 UML类图形象反映系统类之间的关系,大家非常常用。小弟不才,偶尔使用,往往每次使用都得查询各种关系的表示方式。终于,这次认真看了几遍,打算记起来。 注意 记忆方法只是本人联想,用于加强记忆。与该表示方式的来源没有半点关系。 元素 类和接口 +表示public,-表示private。正代表公开, 阅读全文
posted @ 2021-10-11 09:42 苦涩的茶 阅读(717) 评论(0) 推荐(0) 编辑
  2021年8月17日
摘要: ​Qt君最近感觉qDebug相对于printf打印感觉有些慢,但又没有证据,于是闲着就写下qDebug,std::cout,printf的性能表现咯。注:测试数据仅供参考。 0x00 测试环境 环境参数CPUi5-8250U内存8G操作系统Windows@64位Qt版本Qt 5.12.1编译器MSV 阅读全文
posted @ 2021-08-17 10:03 苦涩的茶 阅读(735) 评论(0) 推荐(0) 编辑
摘要: QByteArray转QString打印 QString sz=QString("Therm Msg: "); sz.append(msg.toHex(' '));// QByteArray转QString std::string s = sz.toStdString(); const char* 阅读全文
posted @ 2021-08-17 09:57 苦涩的茶 阅读(6674) 评论(0) 推荐(0) 编辑
  2021年8月3日
摘要: 1、" error: QMainWindow: No such file or directory", 解决方法: 在.pro文件 #include <QMainWindow> 改为#include <QtWidgets>(若没有#include <QMainWindow>,直接添加#include 阅读全文
posted @ 2021-08-03 13:36 苦涩的茶 阅读(3303) 评论(0) 推荐(0) 编辑
  2021年6月29日
摘要: core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个core文件中, 叫core dump. (linux中如果内存越界会收到SIGSEGV信号,然后就会core dump) 在程序运行的过程中,有的时候我们会遇到Segment f 阅读全文
posted @ 2021-06-29 10:39 苦涩的茶 阅读(2649) 评论(0) 推荐(0) 编辑
  2021年3月12日
摘要: 一、为什么需要VLAN 1.1、什么是VLAN? VLAN(Virtual LAN),翻译成中文是“虚拟局域网”。LAN可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算机构成的企业网络。VLAN所指的LAN特指使用路由器分割的网络——也就是广播域。 在此让我们先复习一下广播域的概念。广播 阅读全文
posted @ 2021-03-12 18:01 苦涩的茶 阅读(20089) 评论(0) 推荐(0) 编辑
  2021年2月4日
摘要: 最近在做的项目中使用到动态库的动态加载技术,Windows和Linux都提供了相应的函数来打开动态库、获取函数指针和关闭动态库 ,在打开动态库函数(dlopen或LoadLibrary)中指定动态库的文件名后,在程序运行时是以什么次序来搜索动态库呢? Linux下搜索路径的次序: 1) ELF可执行 阅读全文
posted @ 2021-02-04 14:53 苦涩的茶 阅读(1405) 评论(0) 推荐(0) 编辑
  2021年1月20日
摘要: (一)二层交换机、三层交换机 第二层交换机和第三层交换机的具体区别如下:工作的方式不相同、工作的模式不同、交换的方式不同 一、工作的方式不相同 二层交换技术是发展比较成熟,二层交换机属数据链路层设备,可以识别数据包中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录在自己内 阅读全文
posted @ 2021-01-20 16:41 苦涩的茶 阅读(3621) 评论(0) 推荐(0) 编辑
摘要: 这是在中关村网站截取的H3C S5048E二层交换机参数,以此交换机参数为例子计算。 标注:评价一台二层交换机性能,不能只看接口速率和接口数量,还要从交换容量和包转发率一起衡量。 1、背板带宽 背板带宽,是指交换机接口处理器或接口卡,和数据总线间所能吞吐的最大数据量。背板带宽标志了交换机总的数据交换 阅读全文
posted @ 2021-01-20 16:14 苦涩的茶 阅读(7898) 评论(0) 推荐(0) 编辑

// 1.生成目录索引列表  
点击右上角即可分享
微信分享提示