
c
文章平均质量分 58
别,爱℡
只要努力,结果都不会太差。
展开
-
Linux C/C++本地套接字通信
文章目录一、实现流程二、代码实现1.服务器2.客户端一、实现流程本地套接字的作用:进程间通信有关系的进程间通信没有关系的进程间通信本地套接字实现和网络套接字类似,一般采用TCP通信流程//本地套接字的流程 - TCP//服务器端1.创建监听的套接字 int lfd = socker(AF_UNIX/AF_LOCAL,SOCK_STREAM,0);2.监听的套接字绑定本地的套接字文件 ->server端 struct sockaddr_un addr; //原创 2022-05-23 16:59:17 · 641 阅读 · 0 评论 -
Linux C/C++组播
文章目录一、流程实现二、代码实现1.服务器2.客户端一、流程实现二、代码实现1.服务器代码如下(示例):#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <arpa/inet.h>int main(){ // 1.创建一个通信的socket int fd = socket(PF_INET,原创 2022-05-23 00:48:21 · 796 阅读 · 2 评论 -
Linux C/C++广播
文章目录一、流程实现二、代码实现1.服务器2.客户端一、流程实现二、代码实现1.服务器代码如下(示例):#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <arpa/inet.h>int main(){ // 1.创建一个通信的socket int fd = socket(PF_INET,原创 2022-05-23 00:46:29 · 626 阅读 · 0 评论 -
Linux C/C++UDP通信实现
文章目录一、UDP通信流程二、代码实现1.服务器2.客户端一、UDP通信流程二、代码实现1.服务器代码如下(示例):#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <arpa/inet.h>int main(){ // 1.创建一个通信的socket int fd = socket(PF原创 2022-05-23 00:43:13 · 2747 阅读 · 0 评论 -
Linux C/C++ epoll的工作模式
文章目录一、LT模式(水平触发)服务器代码客户端代码二、ET模式(边沿触发)服务器代码客户端代码一、LT模式(水平触发)假设委托内核检测读事件->检测fd的读缓冲区 读缓冲区有数据->epoll检测到了会给用户通知 a.用户不读数据,数据一直在缓冲区,epoll会一直通知 b.用户只读了一部分数据,epoll会通知 c.缓冲区的数据读完了,不通知LT(level-triggered)是缺省的工作方式,并且同时支持block和no_block so原创 2022-05-23 00:39:41 · 551 阅读 · 0 评论 -
Linux C/C++ I/O多路复用(epoll)
文章目录一、参数介绍二、代码实现1.服务器2.客户端一、参数介绍#include<sys/epoll.h>//创建一个新的epoll实例。在内核中创建了一块数据,这个数据中有两个比较重要的数据,一个是需要检测的文件描述符的信息(红黑树),还有一个是就绪列表,存放检测到数据发送改变的文件描述符信息(双向链表)。int epoll_create(int size); -参数: size:现在不起作用了,必须大于0 -返回值 -1:失败原创 2022-05-23 00:31:48 · 404 阅读 · 0 评论 -
Linux C/C++ I/O多路复用(poll)
文章目录一、参数介绍二、代码实现1.引入库2.读入数据一、参数介绍#include<poll.h>struct pollfd{ int fd; /*委托内核检测的文件描述符*/ short events; /*委托内核检测文件描述符的什么事件*/ short revents; /*文件描述符实际发生的事件*/};int poll(struct pollfd* fds,nfds_t nfds,int timeout); -参数: fds:是原创 2022-05-23 00:28:08 · 332 阅读 · 0 评论 -
Linux C/C++ I/O多路复用(select)
文章目录一、参数介绍二、使用步骤1.服务器端2.客户端一、参数介绍#include<sys/time.h>#include<sys/types.h>#include<unistd.h>int select(int nfds,fd_set* readfds,fd_set* writefds,fd_set* exceptfds,struct timeval* timeout); -参数: nfds:指定被监听文件的文件描述符的总数。通常被设置为原创 2022-05-23 00:24:19 · 347 阅读 · 0 评论 -
Linux C/C++多进程和多线程实现并发服务器
文章目录一、客户端二、服务器1.多进程2.多线程总结一、客户端代码如下:// TCP通信客户端#include<stdio.h>#include<arpa/inet.h>#include<unistd.h>#include<string.h>#include<stdlib.h>int main(){ //1.创建套接字 int fd = socket(AF_INET, SOCK_STREAM, 0);原创 2022-05-19 22:56:35 · 778 阅读 · 0 评论 -
Linux C/C++TCP通信实现
文章目录一、TCP通信流程二、使用步骤1.TCP(客户端)2.TCP(服务器端)总结一、TCP通信流程二、使用步骤1.TCP(客户端)// TCP通信客户端#include<stdio.h>#include<arpa/inet.h>#include<unistd.h>#include<string.h>#include<stdlib.h>int main(){ //1.创建套接字 int fd = s原创 2022-05-17 23:11:20 · 2754 阅读 · 1 评论 -
Linux C/C++字节序转换函数
文章目录一、字节序转换函数二、使用步骤总结一、字节序转换函数转换端口uint16_t htons(uint16_t hostshort); //主机字节序->网络字节序uint16_t ntohs(uint16_t netshort); //网络字节序->主机字节序转IPuint32_t htons(uint32_t hostlong);//主机字节序->网络字节序uint32_t ntohs(uint32_t netlong);//网络字节序->主机字节序原创 2022-05-16 23:09:38 · 1094 阅读 · 0 评论 -
Linux C/C++字节序
文章目录一、字节序1.小端字节序(主机字节序)2.大端字节序(网络字节序)二、检测当前主机字节序总结一、字节序1.小端字节序(主机字节序)数据的高位字节序存储在内存的高位地址,低位字节存储在内存的低位地址2.大端字节序(网络字节序)数据的低位字节序存储在内存的高位地址,高位字节存储在内存的低位地址二、检测当前主机字节序代码如下(示例):#include<stdio.h>int main(){ union { short value原创 2022-05-16 22:27:29 · 542 阅读 · 0 评论 -
Linux C/C++生产者消费者模型-条件变量-信号量
文章目录一、生产者消费者模型1.生产者消费者模型是什么2.生产者消费者简单代码案例(互斥锁解决)二、条件变量解决1.条件变量是什么2.条件变量常用函数3.条件变量解决问题三、信号量解决1.信号量是什么2.信号量函数3.信号量解决总结一、生产者消费者模型1.生产者消费者模型是什么生产者消费者模式 是Controlnet网络中特有的一种传输数据的模式。用于两个CPU之间传输数据,即使是不同类型同一厂家的CPU也可以通过设置来使用。2.生产者消费者简单代码案例(互斥锁解决)#include<原创 2022-04-25 22:13:44 · 1883 阅读 · 0 评论 -
Linux C/C++互斥锁和读写锁
文章目录一、互斥锁1.1互斥锁是什么?1.2互斥锁参数介绍1.3互斥锁案例二、读写锁2.1读写锁是什么?2.2读写锁函数介绍2.3读写锁案例总结一、互斥锁1.1互斥锁是什么?在编程中,引入了对象互斥锁的概念,来保证共享数据操作的完整性。每个对象都对应于一个可称为" 互斥锁" 的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象。1.2互斥锁参数介绍1.3互斥锁案例#include<stdio.h>#include<pthread.h>#include&原创 2022-04-25 22:04:58 · 1886 阅读 · 0 评论 -
Linux C/C++线程
文章目录一、线程是什么?二、线程创建三、线程终止四、线程分离五、线程连接六、线程属性总结一、线程是什么?(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程(user thread原创 2022-04-25 21:54:29 · 1118 阅读 · 0 评论 -
Linux C/C++守护进程(精灵进程)
文章目录前言一、编程规则二、案例实现总结前言精灵进程(daemon)是生存期长的一种进程。它们常常在系统引导装入时起动,在系统关闭时终止。因为它们没有控制终端,所以说它们是在后台运行的。UNIX系统有很多精灵进程,它们执行日常事物活动。一、编程规则(1) 首先做的是调用fork,然后使父进程exit。这样做实现了下面几点:第一,如果该精灵 进程是由一条简单 shell命令起动的,那么使父进程终止使得 shell认为这条命令已经执行完成。 第二,子进程继承了父进程的进程组ID,但具有一个新的进程原创 2022-04-20 23:46:42 · 944 阅读 · 0 评论 -
Linux C/C++共享内存
文章目录一、共享内存二、案例实现总结一、共享内存共享存储允许两个或多个进程共享一给定的存储区。因为数据不需要在客户机和服务器之间复制,所以这是最快的一种 I P C。使用共享存储的唯一窍门是多个进程之间对一给定存储区的同步存取。若服务器将数据放入共享存储区,则在服务器做完这一操作之前,客户机不应当去取这些数据。通常,信号量被用来实现对共享存储存取的同步。常用函数#include<sys/ipc.h>#include<sys/shm.j>int shmget(key_t原创 2022-04-20 23:37:32 · 3515 阅读 · 0 评论 -
Linux C/C++信号6
文章目录一、SIGCHLD信号二、代码示例(使用SIGCHLD信号解决僵尸进程问题)总结一、SIGCHLD信号SIGCHLD信号产生的3个条件:1.子进程结束2.子进程暂停了3.子进程继续运行他们都会给父进程发送该信号,父进程默认忽略该信号。二、代码示例(使用SIGCHLD信号解决僵尸进程问题)#include<stdio.h>#include<unistd.h>#include<sys/types.h>#include<sys/stat.h原创 2022-04-20 17:31:31 · 2742 阅读 · 0 评论 -
Linux C/C++信号5
文章目录一、sigprocmask函数和sigpending函数二、代码示例总结一、sigprocmask函数和sigpending函数int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);调用函数sigprocmask可以检测或更改(或两者)进程的信号屏蔽字。参数:how:如何对内核阻塞信号集进行处理SIG_BLOC :该该进程新的信号屏蔽字是其当前信号屏蔽字和 set指向信号集的并集。set包含了我们希望阻塞的原创 2022-04-20 17:25:19 · 365 阅读 · 0 评论 -
Linux C/C++信号4
文章目录一、信号集二、代码实例总结一、信号集我们需要有一个能表示多个信号——信号集( signal set)的数据类型。将在 sigprocmask这样的函数中使用这种数据类型,以告诉内核不允许发生该信号集中的信号。如前所述,信号种类数目可能超过一个整型量所包含的位数,所以一般而言,不能用整型量中的一位代表一种信号。POSIX.1定义数据类型sigset _ t以包含一个信号集,并且定义了下列五个处理信号集的函数。int sigemptyset(sigset_t *set) ;int sigfil原创 2022-04-20 17:13:30 · 594 阅读 · 0 评论 -
Linux C/C++信号3
文章目录一、signal和sigaction信号捕捉函数二、signal使用三、sigaction使用总结一、signal和sigaction信号捕捉函数sighandler_t signal(int signum, sighandler_t handler);其功能为设置某个信号的捕捉行为参数:signum为要捕捉的信号,handler为捕捉到信号要如何处理SIG_IGN:忽略信号SIG_DEF:使用信号默认的行为指定函数地址:信号捕捉函数返回值成功:返回上一次注册的信号处理函数的原创 2022-04-20 17:02:34 · 676 阅读 · 0 评论 -
Linux C/C++信号2
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、定时器alarm和定时器setitimer二、alarm的案例三、setitimer的案例总结一、定时器alarm和定时器setitimeralarm使用a l a r m函数可以设置一个时间值(闹钟时间),在将来的某个时刻该时间值会被超过。当所设置的时间值被超过后,产生 S I G A L R M信号。如果不忽略或不捕捉此信号,则其默认动作是终止该进程。unsigned int alarm(unsigned int.原创 2022-04-19 23:44:23 · 252 阅读 · 0 评论 -
Linux C/C++信号1
文章目录一、信号是什么?二、基础函数二、使用案例总结一、信号是什么?在计算机科学中,信号是Unix、类Unix以及其他POSIX兼容的操作系统中进程间通讯的一种有限制的方式。它是一种异步的通知机制,用来提醒进程一个事件已经发生。当一个信号发送给一个进程,操作系统中断了进程正常的控制流程,此时,任何非原子操作都将被中断。如果进程定义了信号的处理函数,那么它将被执行,否则就执行默认的处理函数。二、基础函数int kill(pid_t pid, int sig); -功能:给任何的进程原创 2022-04-19 23:29:25 · 261 阅读 · 0 评论 -
Linux C/C++内存映射
文章目录一、什么是内存映射??二、内存映射的优势三、a,b通信代码实现(Linux)四、父子进程通信代码实现(Linux)五、匿名映射代码实现(Linux)六、文件映射进行拷贝代码实现(Linux)内存映射注意实现以及面试常见题一、什么是内存映射??内存映射是将磁盘上某文件的一部分或整个文件映射到应用程序地址空间内某个地址范围的一种机制。然后,应用程序可采用与访问动态内存相同的方法访问磁盘上的文件。与使用fread 和 fwrite 等函数相比,这会加快文件的读取和写入速度。二、内存映射的优势原创 2022-04-18 16:50:34 · 3084 阅读 · 0 评论 -
Linux C/C++管道实现简单聊天
文章目录前言一、进程间的通信二、实现的代码总结前言如何实现简单的通信,在一台主机上,可以通过管道实现进程间的通信。一、进程间的通信我们通过有名管道即可实现简单的聊天,实现的思想如下,但是这样的会导致,一次只能发送一个,所以我们再添加了父子进程,一个接受,一个发送。二、实现的代码chatA.c#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<sys/typ原创 2022-04-16 22:02:55 · 1275 阅读 · 0 评论 -
C++面试笔试必知必会-链表常见题
文章目录一、判断单链表是否有环二、判断两个链表是否相交(力扣160题)三、删除链表的倒数第N个节点(力扣19题)四、旋转链表(力扣61题)总结一、判断单链表是否有环bool IsLinkHasCircle(Node* head,int& val){ Node* fast = head; Node* slow = head; while (fast != nullptr && fast->next_ != nullptr) { slow = slow->原创 2022-04-03 23:04:11 · 1277 阅读 · 0 评论 -
Linux C/C++百万并发的服务器
欢迎大家来观看原创 2022-01-16 17:21:32 · 817 阅读 · 0 评论 -
Linux C/C++ 实现TCP服务器
欢迎大家前来观看,如有错误欢迎指正。原创 2022-01-14 14:40:09 · 2779 阅读 · 1 评论 -
Linux C/C++ 实现HTTP请求器(TCP客户端)
欢迎大家前来借阅原创 2022-01-13 21:23:10 · 3503 阅读 · 0 评论 -
Linux C/C++实现DNS请求器(UDP编程)
欢迎来到别爱的优快云文章目录前言一、DNS1.DNS是什么1.DNS协议报文格式二、代码实现1.DNS请求头的定义2.头部数据3.queries数据4.将头部和queries合并5.解析数据6.发送请求和获取结果7.全部代码总结参考资料前言我们今天要实现一个DNS请求器,运用到的知识主要是UDP编程,以及了解DNS协议,以及协议解析。一、DNS1.DNS是什么域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和 IP 地址相互映射的一.原创 2022-01-12 16:44:32 · 3037 阅读 · 10 评论 -
Linux C/C++ 实现MySQL的图片插入以及图片的读取
今天给大家带来的MySQL的图片插入以及读取MySQL中的图片,用到的编程语言是C语言原创 2022-01-11 21:59:56 · 2550 阅读 · 2 评论 -
Linux C/C++ 手写线程池
欢迎大家来了解C/C++部分的线程池操作,以及代码实现。原创 2022-01-09 18:13:27 · 757 阅读 · 2 评论 -
Linux C/C++ 并发下的计数(技术)方案(互斥锁、自旋锁、原子操作)
欢迎大家来到别爱的优快云文章目录前言一、为什么要使用锁?二、解决方法(互斥锁、自旋锁、原子操作)1.互斥锁2.自旋锁3.原子操作4.三种方法的比较(个人理解)总结前言线程:是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程,但轻量进程更多指内核线程,而把用户线程称为线程。一、为什么要使用锁?下面是一个主线程原创 2022-01-08 22:02:30 · 1244 阅读 · 1 评论 -
Linux C/C++ 编程 实现通讯录(结构体)
欢迎大家来到别爱的优快云文章目录前言一、如何实现简易通讯录?二、实现思路1.架构设计2.链表与结构体的设计3.架构接口层的设计4.业务逻辑的设计5.完整代码总结参考资料前言提示:本文主要实现了简易的通讯录项目的知识点为:链表的操作,添加节点,遍历,查找。提示:以下是本篇文章正文内容一、如何实现简易通讯录?通讯录是大家入门Linux进行编程练手的一个小项目,大家可以通过我的示例进行自己的通讯录实现。我的通讯录具体有以下功能1.插入数据2.打印数据3.删除数据4.搜索数据5.原创 2022-01-07 17:44:31 · 1419 阅读 · 1 评论 -
Linux C/C++ 编程 统计文件单词数量(文件操作)
Linux状态机实现单词数量统计,欢迎大家浏览借鉴原创 2022-01-06 11:24:54 · 2031 阅读 · 0 评论