项目演示-从头实现一个网络阻断-README

前言

项目地址:domain_block

演示视频:域名阻断项目演示


总体设计

跨平台总体设计

在这里插入图片描述

windows端总体设计
在这里插入图片描述

linux端总体设计

在这里插入图片描述

代码详细设计

在这里插入图片描述


开发文档

  1. 首先考虑核心部分的构建,即如何阻断网络。我们先看下windows上的实现方案之一。windows上可以选用WFP(Windows Filtering Platform),进行网络阻断。它需要写成驱动加载到内核,所以得学习下windows驱动编程。相关文档见:

  2. 接下来,我们在考虑如何在Linux上阻断网络。这里选用的是nftablesnftables的简单使用见:iptables和nftables的使用

  3. 如果使用WFP用户层接口,需要在用户层维护一个handle。因此,需要一个服务程序。windows上使用windows服务编程

  4. linux上,我最开始打算使用守护进程,也列了下禁止程序重复启动的一些方法。后来选用systemctl管理服务。关于服务设置,我简单整理了下:linux-windows服务设置-小结

  5. 为了使用UI程序可以和服务程序通信,还需要一个server程序。所以,参考boost::asio的示例,简单实现一个单线程异步的socket服务程序

  6. 由于代码在windows/linux上的不同IDE中开发,使用clang-format进行代码风格管理:C++代码格式化-clang-format

  7. 至于UI界面,选用qt和web都行。或者,UI代码在其他机器上运行都可以。这是进程间使用socket通信带来的好处。这里,使用qt,创建一个可以与用户交互的客户端程序。

猜你喜欢

转载自blog.csdn.net/sinat_38816924/article/details/129777990