自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 UNP第一卷 第十章--SCTP 客户/服务器程序

本文介绍了基于SCTP协议的一到多式客户/服务器程序实现。SCTP通过多流特性有效解决TCP头端阻塞问题,允许不同流独立传输数据。服务器程序支持流号轮询功能,客户端提供单流和多流两种交互模式。文中详细阐述了SCTP套接字创建、地址绑定、事件订阅、消息收发等关键步骤的实现代码,并比较了优雅终止(MSG_EOF)和强制中止(MSG_ABORT)两种关联终止方式。此外,还介绍了通过SCTP_INITMSG选项控制流数量的方法。该实现充分展现了SCTP多流、多宿等协议特性在网络编程中的应用优势。

2025-09-10 23:03:04 606

原创 UNP第一卷 第九章--基本 SCTP 套接字编程

SCTP协议提供了两种接口模型:一到一模型(类似TCP,便于移植)和一到多模型(支持多关联管理)。关键特性包括多宿、多流支持,以及丰富的通知机制(关联状态变化、地址变更等)。专用函数如sctp_peeloff(关联分离)、sctp_bindx(灵活绑定)和sctp_sendmsg/recvmsg(增强收发)扩展了协议能力。不同于TCP,SCTP的shutdown行为特殊,不支持半关闭状态。通知系统采用TLV格式,通过SCTP_EVENTS选项订阅各类传输层事件,为应用提供精细控制。这些特性使SCTP特别适合

2025-09-08 15:02:12 755

原创 UNP第一卷 第八章--UDP套接字编程

1.UDP:提供了更轻量级、低延迟的通信,但牺牲了可靠性、流量控制和连接管理。TCP:提供可靠、有序的字节流,但有更高的延迟和更复杂的握手过程。2.核心函数sendto/recvfrom:是UDP编程的基础,用于发送和接收数据报。3.connect 的妙用(单播通信):可用于UDP实现单播通信、接收异步错误、确定外出接口。4.UDP的主要问题数据报丢失、乱序、重复、损坏。缺乏流量控制导致接收方可能被淹没。需要应用层自行处理这些问题。5.后续内容。

2025-09-03 15:16:11 1120

原创 UNP第一卷第六章--I/O 复用:select 和 poll 函数

本文系统介绍了Unix系统的五种I/O模型及其实现方式。重点分析了阻塞式I/O、非阻塞式I/O、I/O复用(select/poll)、信号驱动式I/O和异步I/O的工作原理与区别,详细讲解了select和poll函数的应用场景、参数设置及实现细节。通过TCP回射服务器的示例,展示了如何使用select/poll实现单进程处理多客户端连接,并探讨了批量输入、半关闭(shutdown)、拒绝服务防护等关键问题的解决方案。文章还比较了select与pselect、poll的异同,总结了各种I/O模型的适用场景和选

2025-08-14 18:12:19 630

原创 strtok函数使用需谨慎

1.修改原始字符串 (用`\0`替换分隔符)2.难以处理空字段和边界情况3.非线程安全(内部使用静态缓冲区)4.状态保存:内部保存位置,无法嵌套使用。

2025-07-02 18:10:32 470

原创 epoll线程池示例代码

④.如果有任务处理,将任务从任务队列 thrPool->tasks[taskpos] 里拷贝到临时开辟的任务空间里task ,然后通知生产者pthread_cond_signal。②.实际任务总数大于最大任务个数则阻塞等待(等待任务被处理) pool->max_job_num <= pool->job_num,pthread_cond_wait。⑤.释放任务队列空间pool->tasks,线程组空间pool->threads,线程池空间pool。⑤.如果要摧毁线程池,解锁,释放任务空间,做线程退出处理。

2025-04-10 17:25:39 953

原创 线程中的条件变量pthread_cond_t

与互斥锁不同,条件变量是用来等待而不是用来上锁的,!条件变量用来自动阻塞一个线程,直到某特殊情况发生为止。通常条件变量和互斥锁同时使用。条件变量的两个动作:①. 条件不满, 阻塞线程②. 当条件满足, 通知阻塞的线程开始工作条件变量的类型: pthread_cond_t。

2025-04-03 15:09:04 951

原创 高并发服务器--epoll相关函数

是 Linux 系统中用于创建一个epoll实例的系统调用。epoll是一种高效的 I/O 事件通知机制,通常用于高性能网络服务器或需要处理大量文件描述符的场景。

2025-03-31 17:27:37 1224

原创 文件与IO

运行结果: :要打开的文件的路径名,可以是相对路径或绝对路径。 :打开文件的标志,用于指定文件的打开方式和操作选项。常见的标志包括:是函数返回的文件描述符。如果成功关闭文件,函数返回0;如果失败,返回-1。运行结果: :文件描述符,代表需要读取的文件或设备。 :指向用户分配的缓冲区的指针,read()函数将把读取到的数据写入该缓冲区。 :需要读取的字节数,表示最多读取字节数据。 read()函数的返回值,成功返回取的字节数,如果读取到文件末尾,返回0;返回-1,并设

2025-03-11 15:49:42 489

原创 三次握手四次握手

三次握手四次挥手

2025-03-11 15:12:20 140

原创 gcc的工作流程

gcc的工作流程

2024-09-26 18:15:31 283 1

原创 int *(**(**ppfunarrpp)(int))[10]的定义和应用

ppfunarrpp是函数指针的指针,函数的参数是int,函数的返回值是指针的指针,这个指针指向一个数组,数组的每个元素是一个指针。 int *(**ppfunarr(int))[10];int *(**(*ppfunarrp)(int))[10] = &ppfunarr; int *(**(**ppfunarrpp)(int))[10] = &ppfunarrp;int *(*parr)[10];其实函数的返回值应该是int *(**parr)[10],解引用一次函数就可以了。parr = *(*ppf

2024-08-12 18:03:26 239

原创 学习笔记----形参指针的指针char *argv[]

2.形参可类比一级指针,&argv是指针自己的地址,argv是指针,有自己的空间,能存放指向的地址,也就是外边实参parameter传进来的地址。可以看出传进来的地址是。1.指针parameter指向的是str_arr[0]的地址,即&str_arr[0],且数组名str_arr也可以表示首元素的地址。1.&argv和argv(&argv[0])不一样,argv是指针,有自己的空间,能存放指向的地址。验证了上面的第二点,数组名没有独立的空间不能指向新的地址,指针有独立的空间,可以存储指向的地址。

2024-07-24 17:31:48 358

原创 C语言的右左法则

右左法则:首先从最里面的圆括号看起,然后往右看,再往左看。每当遇到圆括号时,就应该掉转阅读方向。/*funcparr是函数指针数组*///函数名就是函数的首地址,所以&func1和func1都可以,两种写法/*funcparrp是函数指针数组指针*//*funcparrpp是函数指针数组指针的指针*/return 0;

2024-07-11 20:28:14 665

原创 undefined reference to `__lws_close_free_wsi_final‘的排错与解决方法

遇到undefined reference to `__lws_close_free_wsi_final'这个报错

2024-01-16 15:45:23 585

原创 ./include/libwebsockets/lws-genhash.h:85:18: error: field ‘ctx’ has incomp

‘HMAC_CTX‘ 的类型不完整

2023-12-14 16:11:24 1170 1

原创 (CentOS)Freeswitch加载 mod_cdr_pg_csv模块报错fatal error: libpq-fe.h: No such file or directory 的解决办法

【代码】(CentOS)Freeswitch加载 mod_cdr_pg_csv模块报错fatal error: libpq-fe.h: No such file or directory 的解决办法。

2023-12-04 11:34:37 801

原创 Linux 下使用 ifconfig 查看不到 ip 地址,不显示ens33信息的解决方法

Linux 下使用 ifconfig 查看不到 ip 地址,不显示ens33信息的解决方法

2023-11-28 14:33:09 531 1

原创 freeswitch的注释遇到的问题,导致放音路径不对。

freeswitch的注释遇到的问题,导致放音路径不对。

2023-11-28 14:12:26 372 1

原创 freeswitch加载moh-shout模块时报错 fatal error: ogg/ogg.h: No such file or directory的解决方法

报错详情:In file included from speex.c:29:0: shout_ogg.h:31:21: fatal error: ogg/ogg.h: No such file or directory #include

2023-11-27 14:33:18 285 1

原创 freeswitch报错-ERR DESTINATION_OUT_OF_ORDER的其中情况及解决办法。

通过使用通道变量,下列命令也能改变主号名称和号码,报错-ERR DESTINATION_OUT_OF_ORDER。

2023-11-22 15:56:18 1398

原创 替换空格C++习题,使用for(c:str)语法

请实现一个函数,把字符串中的每个空格替换成"%20"。

2023-10-30 15:08:38 165 1

原创 解决‘mysqlclient.so.21 => not found‘或查询解决依赖问题

此时,再次ldd可执行文件,查看依赖库。没有出现找不到的库文件,运行可执行文件即可。发现是存在mysqlclient.so.21库文件的。发现是找不到mysqlclient.so.21。命令查看可执行程序(动态库)的依赖库。步骤三:如果存在库文件,这只需要通过。当运行可执行文件报依赖库的问题时,如果用户不是root,需要使用。命令查询是否存在此库文件。或者,将用户切换成root。步骤一:我们可以使用。

2023-09-26 18:02:09 1585 1

原创 Source Insight中文乱码问题解决方法

当文件出现中文注释乱码如下时,可通过两种方式解决。

2023-08-24 11:14:23 12776 2

原创 【毕业设计】基于stm32的智能农业控制系统

【毕业设计】从0到1的智能农业控制系统。

2023-07-16 22:21:27 7393 15

原创 c语言/c++面试题——char *pt = “AAA“;printf(“%s\n“,pt);*pt = ‘B‘;printf(“%s\n“,pt);是否能运行,能->结果是什么,不能->什么错误

字符常量存储在只读区,指针不能修改指向存储的内容。

2022-09-08 00:12:00 520

原创 c语言/c++面试题——char *(*c[10])(int **p)

3.char *()(int **p) ----> c数组中每一个元素都是函数指针,其所这项的函数返回值是char*类型,且函数带一个指向指针的指针。pt是指针,pt指针指向了由10个char袁术构成的数组,即pt是数组指针。pt是数组,数组是有10个char*指针所组成。2.*c[10] ----> c是一个指针数组。1.c[10] ----> c是数组。

2022-09-07 23:20:21 672

原创 c语言/c++面试题——char *const *(*next)()

4.char *const *(next)() ----> next是函数指针,指向一个没有参数的函数,并且该函数返回值是一个指针,该指针指向一个类型为char的常量指针。3.char *const ----> 应该是一个指针,常量指针(指向常量的指针)char *const *(*next)();请对这一行代码进行解释?2.(*next)() ----> next是函数指针。1.(*next) ----> next是指针。

2022-09-07 22:37:07 580

原创 asterisk运行调试命令

/asterisk & 在后台启动asterisk./asterisk –vvvc 启动asterisk并尽量多的在控制台显示调试信息./asterisk –r 连接asterisk控制台set verbose 9999 设置打印详细信息。

2022-09-06 17:57:07 468

原创 asterisk——分支条件

带条件判断的Goto,通过计算表达式的值,并根据结果的真假将呼叫这发送到一个特定的目的地。NoOp() 不进行操作,可将数值打印到控制台进行调试。

2022-09-06 16:12:09 474

原创 asterisk——变量、模式匹配、表达式

要引用变量,只需要输入变量的名字。要引用变量的,则必须输入美元符号、左花括号、变量名和右花括号。

2022-09-02 11:21:29 545

原创 asterisk——dialplan函数

用于将呼叫转到dialplan的另一个地方。Goto()需要将目的、、

2022-09-01 23:34:38 580

转载 Linux——crontab定时任务

使用crontab命令可以修改crontab配置文件,然后该配置由cron公用程序在适当的时间执行,该命令使用权限是所有用户。

2022-08-31 15:01:18 1072

原创 asterisk——dialplan语法

asterisk dialplan定义在目录下名为的配置文件中。dialplan由四个层次的组件构成:上下文、分机、优先级和应用。

2022-08-22 11:24:45 604

原创 ‘TAP驱动未安装或已损坏‘问题的解决方法

'TAP驱动未安装或已损坏'问题的解决方法,当安装软件或登录时,遇到TAP驱动未安装或已损坏的提示时,检查是否安装 TAP Windows适配器V9。

2022-08-11 15:44:36 18886 7

软电话linphone安装包

软电话linphone安装包

2023-12-01

文件对比Beyond安装包

文件对比Beyond安装包

2023-12-01

毕业设计基于stm32的智能农业控制系统

毕业设计基于stm32的智能农业控制系统

2023-07-16

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除