- 博客(80)
- 收藏
- 关注
原创 网络编程 lesson4 linux下的IO模型和特点
本文核心内容!!!使用多路I/O多路复用技术的基本流程在Linux中,有几种常见的I/O模型,它们决定了应用程序如何进行输入和输出操作。
2023-05-14 16:36:03
344
原创 网络编程 lesson3 UDP基础编程
UDP(User Datagram Protocol,用户数据报协议)是一种在计算机网络中常用的传输层协议。与TCP(Transmission Control Protocol,传输控制协议)相比,UDP是一种无连接的协议,它提供了一种简单的、无状态的数据传输方式。:UDP在通信之前不需要建立连接,发送方直接将数据报发送到目标地址。这种无连接的特性使UDP的通信过程更加简洁高效,但也导致了它的不可靠性。:由于UDP缺乏数据确认、重传机制和流量控制,因此它无法保证数据的可靠性和顺序。
2023-05-14 16:09:03
443
原创 网络编程 lesson2 TCP基础编程
Socket是一种编程接口(API),用于在计算机网络中实现进程间的通信。它提供了一组函数,允许开发人员创建网络应用程序,通过网络传输数据并进行网络通信。通过Socket,应用程序可以使用,并。Socket提供了一种抽象层,隐藏了底层网络细节,使开发人员能够专注于应用程序的逻辑,而。总而言之,Socket提供了一种通用的网络编程接口,使开发人员能够创建网络应用程序,并实现跨计算机的数据传输和网络通信。它为开发各种类型的网络应用提供了基础设施和工具。
2023-05-14 15:48:54
613
原创 网络编程 lesson1 网络概念
常见的 Flooding 攻击包括 SYN Flood(利用 TCP 协议的三次握手过程),UDP Flood(发送大量的 UDP 数据包),以及 ICMP Flood(发送大量的 ICMP Echo 请求)。如果需要长距离的传输,比如某大型企业,总部在北京,分公司在长沙,局域网是无法架设的。局域网的缩写是LAN,local area network,顾名思义,是个本地的网络,只能实现小范围短距离的网络通信。广域网,就像是大马路,分支可能少,但类型多,像国道、省道、高速、小道等,连接了很多大的局域网。
2023-05-14 15:02:59
799
原创 Lighttpd服务器安装
LigHttpd是一个开源的轻量级嵌入式Web server,是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点
2023-05-10 13:04:54
1177
原创 LINUX系统下的modbus库安装
先分享下libmodbus-3.1.7.tar.gz安装包,安装包放在linux系统下的home的某个文件夹下,我选择创建一个Modbus文件夹链接:。
2023-05-09 13:51:01
2299
2
原创 C++基础篇 第六天 多态
范围函数名参数返回值重载同一作用域相同数据类型不同或参数个数不同返回值不做要求重定义继承中相同不做要求返回值相同重写(覆盖)继承中相同必须相同返回值相同重载:同一作用域(类),同名函数,参数的顺序、个数、类型不同都可以重载。函数的返回值类型不能作为重载条件(函数重载、运算符重载)重定义:有继承,子类重定义父类的同名函数(非虚函数),参数顺序、个数、类型可以不同。子类的同名函数会屏蔽父类的所有同名函数(如果想访问父类隐藏的函数可以通过作用域解决)
2023-05-07 20:41:00
139
原创 C++基础篇 第五天 继承
派生类可以在继承基类的基础上添加新的成员变量和方法,或者重写父类的方法以修改行为。继承是面向对象编程中的核心概念之一,它提供了一种灵活和可扩展的代码组织方式,使得代码更具有可重用性、可维护性和可扩展性。代码重用:继承允许子类从父类继承属性和方法,这样子类就可以重用父类的代码,避免了重复编写相同的功能。类的层次结构:继承使得类之间可以建立层次结构,通过继承关系可以构建更加抽象和具体的类。//定义大学生类,继承自学生类,大学生有专业名、成绩的私有成员变量,还有是否获得奖学金的成员函数(成绩为判断依据)。
2023-05-06 21:25:44
203
原创 C++基础篇 第四天 模板和泛型编程
在C++中,模板(Template)是一种通用编程工具,用于创建通用代码,可以在不同类型上进行重用。模板允许在编写代码时将类型参数化,从而实现更加灵活和通用的功能。模板分为类模板和函数模板。
2023-05-06 10:52:55
72
原创 C++基础篇 第三天 友元和运算符重载
友元函数是一种特殊类型的函数,它能够访问类的私有成员和保护成员。这意味着,即使这些成员被声明为私有或保护的,友元函数也可以在类外部直接访问它们。友元函数的作用主要有以下几个方面:提高程序的效率:如果某个函数需要频繁地访问类的私有成员或保护成员,将其声明为友元函数可以避免通过类的公共接口来访问这些成员,从而提高程序的效率。增加代码的灵活性:友元函数可以访问类的私有成员和保护成员,这使得在某些情况下可以更方便地实现某些功能。
2023-05-05 21:31:14
387
原创 C++基础篇 第二天 面向对象基础
封装(Encapsulation):将数据和行为封装在一个类中,防止外部直接访问和修改内部实现细节,保证了数据的安全性和可维护性。继承(Inheritance):通过继承,子类可以继承父类的属性和方法,并且可以在此基础上扩展新的属性和方法,提高了代码的复用性。多态(Polymorphism):同一种行为在不同情境下具有不同的表现形式,可以通过虚函数(Virtual Function)和纯虚函数(Pure Virtual Function)实现,提高了程序的灵活性和可扩展性。
2023-05-05 18:18:00
86
原创 C++基础篇 第一天 入门C++
C++是一种高级编程语言,它是在1980年代由贝尔实验室的Bjarne Stroustrup开发的,是C语言的扩展。C++在这些方面都进行了改进,并且还引入了许多新的特性,例如模板、多重继承、虚函数等等。之后,C++11、C++14、C++17、C++20等版本相继发布,每个版本都增加了新的特性和改进。内联函数可以提高程序的运行效率,内联函数在编译阶段就将函数体内容替换到调用处,节省了函数调用的时间(有点类似于c语言中的宏定义)。C++的函数比C语言的函数更加强大和灵活,支持更多的特性。
2023-05-04 13:43:45
113
原创 IO与进程篇 LESSON8 system V IPC通信
进程间消息队列(Inter-process Message Queue,简称 IPC Message Queue)是一种特殊类型的消息队列,用于在不同进程间传递消息。它是一种系统级别的 IPC(Inter-process Communication,进程间通信)机制。进程间消息队列通过创建一个消息队列对象来实现,这个消息队列对象被系统内核维护,进程可以通过向这个对象发送消息,或从这个对象接收消息来进行通信。与进程共享的消息队列可以用于不同进程之间的协作和数据传输,这样进程就。
2023-05-03 13:45:52
144
原创 IO与进程篇 LESSON7 传统进程通信
进程通信是指两个或多个进程之间进行数据交换、共享资源或者互相协调的过程。进程通信的实现需要一定的机制和协议来保证通信的正确性、可靠性和效率。
2023-05-01 01:45:28
580
原创 IO与进程篇 LESSON6 线程互斥与条件变量
当持有锁的线程完成对共享资源的访问后,它会释放互斥锁,允许其他线程继续访问共享资源。在多线程编程中,条件变量是一种线程间同步的机制,它允许一个线程等待另一个或多个线程满足某个条件后再执行。主要用来保护临界资源,每个临界资源都由一个互斥锁来保护,线程必须先获得互斥锁才能访问临界资源,访问完资源后释放该锁。例如,当两个线程同时尝试写入同一内存位置时,由于同时进行写入可能会导致数据的不一致性,因此需要确保只有一个线程能够访问该内存位置。在计算机程序中,线程互斥是指多个线程尝试访问共享资源时出现冲突的情况。
2023-04-29 19:28:18
261
原创 IO与进程篇 LESSON4 基础进程编程
在父进程中,可以使用fork()系统调用来创建一个子进程。创建子进程后,子进程会继承父进程的一些属性,如文件描述符、信号处理程序等。父进程和子进程之间是一种关系,父进程可以创建多个子进程,每个子进程都有自己的独立资源,并且可以运行不同的程序代码。在一个进程中,可以创建子进程,结束进程比较简单,就是将进程结束,类似return,但是还是和return有区别的。下面若子进程先结束,父进程如果没有及时回收,子进程变成。让子进程变成孤儿进程,成为后台进程;,被init进程收养,子进程变成后台进程。
2023-04-21 22:41:38
274
原创 IO与进程篇 LESSON2 文件IO
在Linux系统中,文件IO也是一个非常重要的概念。在Linux中,所有的设备、文件、管道、套接字等都是通过文件描述符进行访问和操作的。
2023-04-20 21:33:32
186
原创 IO与进程篇 LESSON1 标准IO
标准I/O(Input/Output)是一种在Unix/Linux系统中用于输入和输出的通用接口。它提供了一种在程序和操作系统之间进行标准化通信的方式,使得程序可以从标准输入流(stdin)读取输入,向标准输出流(stdout)和标准错误流(stderr)输出结果。
2023-04-20 20:29:43
280
原创 TCP实现服务器和客户端通信
TCP (Transmission Control Protocol) 是一种面向连接的协议,用于在计算机网络中传输数据。TCP 可以确保数据的可靠传输,即使在网络环境不稳定的情况下也能够保证数据的完整性和顺序。面向连接:在 TCP 通信中,通信的双方必须先建立一个连接,然后才能进行数据的传输。连接的建立需要经过三次握手过程,确保双方都能够进行通信。可靠传输:TCP 可以保证数据的可靠传输,它使用确认和重传机制来确保数据的完整性和顺序。
2023-04-17 15:58:24
5307
原创 udp实现聊天室项目
服务器端记录客户端的地址,客户端发送消息后,服务器群发给各个客户端软件。e. 如果是离开消息,则将该客户端从链表中删除,并将其离开信息广播给聊天室内的其他客户端。把某个客户端登录的消息发给其它客户端。b. 循环监听客户端的消息,接收到消息后根据消息类型分别处理。:服务器删除退出客户端的地址,并把退出消息发送给其它客户端。:服务器只需要把某个客户端的聊天消息转发给所有其它客户端。c. 如果是登录消息,则将消息广播给聊天室内的其他客户端。d. 如果是聊天消息,则将消息发送给聊天室内的其他客户端。
2023-04-15 18:49:53
669
原创 select函数实现多路io复用
select是一个用于多路I/O复用的系统调用函数,常用于监听多个文件描述符上是否有读写事件发生。它的原型为:select函数的返回值表示发生事件的文件描述符的个数,如果返回值为0,则表示在指定时间内没有任何事件发生,如果出错则返回-1。在使用select函数之前需要对文件描述符集合进行初始化。fd_set类型是一个位图,每一个位表示一个文件描述符。可以通过下面的宏来操作fd_set类型:FD_ZERO(fd_set *set):将set清零,初始化为一个空集。
2023-04-14 10:47:36
495
原创 UDP实现服务器和客户端通信
UDP (User Datagram Protocol) 是一种面向无连接的传输层协议,它不保证数据包的可靠性,但具有传输速度快的优点。在UDP通信中,数据包被封装在UDP数据报中,每个数据报包括目标端口号和源端口号,不需要在每个数据包中都建立连接或断开连接。UDP通信的工作方式与TCP通信不同。在TCP通信中,客户端和服务器之间需要先建立连接,然后才能传输数据。而在UDP通信中,客户端和服务器可以直接发送数据包,不需要事先建立连接。
2023-04-12 13:07:23
2806
原创 数据结构-双向链表(c语言实现)
/1.创建一个空的双向链表//2.链表指定位置插入数据//3.遍历双向链表//4.指定位置删除 -双向链表// 5.判断双向链表是否为空// 6.求双向链表的长度// 7.查找指定数据出现的位置// 8.修改指定位置的数据// 9.删除双向链表中的指定数据// 10.转置双向链表。
2023-04-10 08:06:48
515
原创 用fgets函数实现查询文件行数
fgets函数的介绍在linux下,wc -l 文件名可以实现查看文件的行数操作,那么能不能用fgets来实现这个操作呢?fgets函数的介绍我们可以使用fgets的特性进行实现。
2023-03-28 17:17:48
991
原创 一款简易的学生管理系统
一款学生管理系统,功能包括显示帮助菜单,成绩录入,计算学生平均分,列出成绩单,按照平均成绩由高到底排序,按学号查询学生成绩,清屏功能。
2023-03-12 21:06:45
180
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅