腾讯云服务搭建coturn
摘要:一、概述 之前用的是阿里云的的服务系统是CentOS,服务到期后就没再续了(贵了),继而买了腾讯的云服务。为了使webrtc项目能够正常的启动起来,有必要配置一下coturn。腾讯云用的是ubuntu20 二、具体的步骤 1.安装coturn依赖库 sudo apt-get install libs
阅读全文
posted @
2022-12-14 11:12
飘杨......
阅读(1297)
推荐(0) 编辑
使用libevent实现一个简单的tcp服务端
摘要:一、概述 1.特点: 1.事件驱动、高性能、轻量级、专注于网络 2.源代码精炼、易读 3.跨平台 4.支持多种I/O多路复用技术,如epoll 、poll 、select等 5.支持I/O和信号等事件 2.使用libevent 函数之前需要分配一个或者多个 event_base 结构体, 每个eve
阅读全文
posted @
2021-12-21 10:14
飘杨......
阅读(978)
推荐(0) 编辑
使用C语言获取当前系统的libevent支持的异步IO模型有哪些
摘要:一、概述 案例:使用libevent获取当前系统支持异步IO模型有哪些(select/poll/epoll) 二、代码示例 //获取libevent支持的方法和当前系统使用的方法 #include <stdio.h> #include <stdlib.h> #include <string.h> #
阅读全文
posted @
2021-12-20 14:45
飘杨......
阅读(90)
推荐(0) 编辑
使用C语言实现本地socke通讯
摘要:一、概述 使用本地socket通讯可以实现进程之间的通讯。 相关函数描述如下: int socket(int domain, int type, int protocol); 函数说明: 创建本地域socket 函数参数: domain: AF_UNIX or AF_LOCAL type: SOCK
阅读全文
posted @
2021-12-20 10:58
飘杨......
阅读(935)
推荐(0) 编辑
使用C语言进行udp通信
摘要:一、概述 UDP协议简单介绍: 1.UDP协议是用户数据报协议,面向无连接的、不稳定、不可靠、不安全的数据报传递 更像是是收发短信。 2.UDP传输不需要建立连接,传输效率更高,在稳定的局域网内环境相对可靠 3.UDP天然支持多客户端 C语言UDP函数介绍: ssize_t recvfrom(int
阅读全文
posted @
2021-12-20 10:14
飘杨......
阅读(2763)
推荐(0) 编辑
使用epoll实现聊天服务
摘要:一、概述 1.epoll函数及相关结构体介绍 多路IO-epoll 将检测文件描述符的变化委托给内核去处理, 然后内核将发生变化的文件描述符对应的事件返回给应用程序. (通俗点讲就是我们不用关心文件描述符的变化了,内核帮我们干了,并且内核把那些有变化的具体的文件描述符都会返回回来) 函数介绍: in
阅读全文
posted @
2021-12-15 10:43
飘杨......
阅读(256)
推荐(0) 编辑
使用poll实现聊天服务
摘要:一、概述 poll函数介绍: int poll(struct pollfd *fds, nfds_t nfds, int timeout); 函数说明: 跟select类似, 监控多路IO, 但poll不能跨平台. 参数说明: fds: 传入传出参数, 实际上是一个结构体数组 fds.fd: 要监控
阅读全文
posted @
2021-12-15 10:00
飘杨......
阅读(168)
推荐(0) 编辑
C语言select实现高并发服务器
摘要:一、概述 除了使用多线程或者多进程技术,我们是否还可以使用其他的方法来实现服务端连接多个客户端呢?答案是肯定的,那就是多路IO技术select。 多路IO技术: select, 同时监听多个文件描述符, 将监控的操作交给内核去处理, 数据类型fd_set: 文件描述符集合--本质是位图(关于集合可联
阅读全文
posted @
2021-12-13 14:32
飘杨......
阅读(1198)
推荐(0) 编辑
C多进程实现聊天服务
摘要:一、概述 案例:使用多进程实现聊天服务。要求:可以有多个客户端连接,且客户端发送什么数据服务端就回复什么数据 实现步骤: 1.创建监听文件描述符socket 2.绑定端口bind 3.监听端口listen 4.当接受到一个连接时开启一个子进程来实现,来实现和客户端的通讯(fork) 5.具体客户端通
阅读全文
posted @
2021-12-13 13:39
飘杨......
阅读(72)
推荐(0) 编辑
C语言实现多线程版聊天服务
摘要:一、概述 案例:C+pthread+socket实现多线程聊天服务,要求:服务端可以连接多个客户端,客户端发的消息,服务端再转发给客户端。 实现步骤: 1.创建监听文件描述符socket 2.绑定端口bind 3.监听端口listen 4.接收客户端请求,并在新的线程中执行(pthread+acce
阅读全文
posted @
2021-12-13 13:35
飘杨......
阅读(415)
推荐(0) 编辑
C使用信号量实现生产者消费者模型
摘要:一、概述 案例:编写一个案例代码,使用信号量(sem_t)来实现生产者消费者模型。 信号量:相当于多把锁,可以理解为加强版的互斥锁,其在一定程度上可以提高并发的效率 相关函数介绍: 相关函数 定义信号量 sem_t sem; int sem_init(sem_t *sem, int pshared,
阅读全文
posted @
2021-12-03 10:02
飘杨......
阅读(378)
推荐(0) 编辑
C实现读写锁
摘要:一、概述 案例:编写一个案例测试读写锁,要求:新建三个线程写,5个线程读,来测试读写锁。 读写锁的基本概念: 读写锁也叫共享-独占锁。当读写锁以读模式锁住时,它是以共享模式锁住的;当它以写模式锁住时,它是以独占模式锁住的。写独占,读共享。 读写锁的使用场合: 对数据结构读的次数远大于写的情况 读写锁
阅读全文
posted @
2021-12-01 14:42
飘杨......
阅读(1970)
推荐(0) 编辑
使用PThread+消息队列创建一个生产者消费者模型
摘要:一、概述 案例:使用pthread+消息队列(单链表环形队列) 实现生产者消费者模型 各个类的职责说明: 1.message_queue.cpp消息队列 ps:这个类最主要的方法有两个(这个类是线程安全的),一个是enqueueMessage(Message)向消息队列中放入数据,另一个是deque
阅读全文
posted @
2021-11-22 16:53
飘杨......
阅读(693)
推荐(0) 编辑
Linux注册信号处理函数
摘要:一、概述 案例:编写一个小例子,注册一个信号处理函数,处理进程中断信号(SIGINT),我们运行程序后按住Ctrl+C不能退出这个程序,因为我们在代码中已经对这个信号进行捕获了。,捕获之后它就只走我们自己的逻辑而不走系统默认的逻辑。 信号机制: 进程A给进程B发送信号,进程B收到信号之前执行自己的代
阅读全文
posted @
2021-11-19 10:55
飘杨......
阅读(1239)
推荐(0) 编辑
使用mmap函数建立共享映射区,实现两个不相干的进程之间通讯
摘要:一、概述 案例:使用mmap建立共享映射区,实现两个不相干的进程之间通讯。 存储映射I/O (Memory-mapped I/O) 使一个磁盘文件与存储空间中的一个缓冲区相映射。从缓冲区中取数据,就相当于读文件中的相应字节;将数据写入缓冲区,则会将数据写入文件。这样,就可在不使用read和write
阅读全文
posted @
2021-11-19 10:40
飘杨......
阅读(220)
推荐(0) 编辑
C/C++使用FIFO实现非父子进程之间的通讯
摘要:一、概述 案例:编写两个进程,要求实现两个进程之间的通讯,A进程循环写数据,B进程循读取管道中的数据。 fifo简单介绍:使用fifo这个系统提供的Api函数可实现两个进程之间的相互通讯。其通讯原理是通过mkfifo函数创建一个fifo文件,进程A和进程B通过操作者fifo文件来完成双方的通信。由于
阅读全文
posted @
2021-11-16 09:59
飘杨......
阅读(889)
推荐(0) 编辑
Linux使用pipe管道实现父子进程之间通讯
摘要:一、概述 管道的基本概念理解: 1.管道本质上是一块内核缓冲区(一端将数据写入内核,另一端从内核中读取数据),内部的实现是环形队列 2.管道有读写两端,读写两端是两个文件描述符 3.数据的流向是从管道的写端流到管道的读端(数据的流向是单向的) 4.数据被读走了之后,在管道中就消失了 5.pipe只能
阅读全文
posted @
2021-11-11 09:40
飘杨......
阅读(819)
推荐(0) 编辑
posix实现最简单的生产者消费者模型
摘要:一、概述 案例:使用posix线程模型,实现一个最简单的生产者消费者模型。用一个全局的int类型的变量来表示产品。用一个生产者线程生产产品,初始产品数量为0,只有当生产10个产品的时候,消费者线程才会启动,开始消费。 当消费者线程把产品消费完(产品数为0)的时候通知生产者继续生产产品,生产到10个再
阅读全文
posted @
2021-10-18 16:08
飘杨......
阅读(105)
推荐(0) 编辑
posix线程模型使两个线程共同完成从0~100的相加任务之和
摘要:一、概述 案例:使用posix线程模型编写一小案例:两个线程做加和操作,其中一个线程从1加到50,另外一个线程从51加到100.使其最后结果等于5050 二、示例代码 // 创建两个线程共同操作0~100相加 // Created by wei.yang on 2021/10/15. // #inc
阅读全文
posted @
2021-10-15 13:26
飘杨......
阅读(90)
推荐(0) 编辑
posix线程模型之创建一个简单的线程
摘要:一、概述 案例:使用posix线程模型创建一个线程,在线程执行方法中从0打印到9,并给执行方法传递参数。 二、示例图片 三、代码示例 // posix线程模型创建一个最简单的线程 // Created by wei.yang on 2021/10/15. // #include "create_a_
阅读全文
posted @
2021-10-15 10:31
飘杨......
阅读(127)
推荐(0) 编辑