gnugk
文章平均质量分 94
StarSky_Ye
一个在程序员路上的菜鸟
展开
-
gnugk5.5源码分析(8)之路由策略RoutingPolicy
一、前述在gnugk的源码实现中,关于路由策略相应的配置主要是集中在Routing Configuration章节中。仔细阅读gnugk的使用手册,首先可以了解以下几点主要内容:对于Gnugk实现来说,路由意味着对每一路通话找一个合适的目的IP路由策略的应用时机是对每一路通话的第一个消息生效;而所谓的通话的第一个消息具体情况是指,对于注册终端是ARQ消息;对于未注册终端是Setup消息;对于GK的友邻(neighbors)是LRQ消息;对于其它GK转发的带有ForwardOnFacility原因的F原创 2021-03-06 17:13:14 · 451 阅读 · 4 评论 -
gnugk5.5源码分析(6)之H245代理实现
一、前述对于H323协议来说,H460协议主要是用来完成网络穿透功能,而其中使用更多的是H460.18和H460.19协议,H460.18主要是完成信令上的协商穿透,其中就包括了H225信令和H245信令;而H460.19主要是完成媒体上的穿透。因此,本文在讲述gnugk的H245时,也会区分有H460协议过程和无H460协议过程。二、gnugk相关配置项gnugk对于H245协议的控制配置项,主要是由H245Routed控制,但是如果配置了EnableH46018且终端支持H460协议,或者Prox原创 2021-01-03 16:47:29 · 738 阅读 · 0 评论 -
gnugk5.5源码分析(5)之H225代理实现
一、gnugk的代理模式对于gnugk的实现,依据配置项,可以有不同的信令代理行为;具体来说,有下面这几种:呼叫信令(signaling messages)由终端之间直接交互,即gnugk完全不代理转发任何的呼叫信令;gnugk仅代理转发h225协议相关的信令,而不代理转发h245信令和媒体数据流(RTP/RTCP);gnugk代理转发h225和h245相关的信令,但不代理转发媒体数据流;gnugk代理转发h225和h245相关的信息,并且代理转发媒体数据流,包括T120的通道数据;这时gnug原创 2020-11-29 11:50:45 · 1011 阅读 · 0 评论 -
gnugk5.5源码分析(4)之ras相关消息处理实现
一、ras消息类型在h225.h中,H225_RasMessage有定义了H323协议上的各类ras消息。 enum Choices { e_gatekeeperRequest, e_gatekeeperConfirm, e_gatekeeperReject, e_registrationRequest, e_registrationConfirm, e_registrationReject, e_unregist原创 2020-11-22 21:57:15 · 666 阅读 · 0 评论 -
gnugk5.5源码分析(3)之模板工厂
前言如果按前面第二节的内容,这节应该是接着讲Ras或者H225的socket收到包后,怎么去处理的事项。但是在开始讲如何数据包之前,我想先讲一下gnugk的模板工厂定义与实现。之所以要这样,是因为在接下来的很多地方都会用到这个实现,所以感觉应该先讲讲。简单来说,gnugk的模板工厂定义,就是定义了四类工厂方法,不带参数、带1个参数、带2个参数、带3个参数的的工厂,这里讲到的工厂,是一种设计方法,工厂可以构造生成产品;而采用模板,可以更加灵活的定义工厂的类型。在gnugk中这个实现被定义在factory.原创 2020-11-19 23:15:39 · 203 阅读 · 0 评论 -
gnugk5.5源码分析(2)之网络监听
前言gnugk本身是作为服务器的角色,那么就必然少不了网络监听,而网络监听整体上就大概分为UDP消息监听和TCP连接的监听。对于H323协议,其UDP相关的消息,主要是RAS消息,即GRQ/RRQ/LRQ等,而TCP相关的消息,主要是H.225.0 消息和H.245消息;因此对于gnugk的实现来说,主要也是有监听UDP和TCP两种连接的消息。一、角色划分由于是充当服务器,因此对于网络连接请求是需要监听并建立连接的。对于UDP协议,本质就是创建一个网络套接字,等待接收UDP数据包即可;而对于TCP协议原创 2020-11-15 22:08:24 · 491 阅读 · 0 评论 -
gnugk5.5源码分析(1)之多线程模型
前言gnugk是对H323协议的一个应用程序,其主要是实现了H323协议账号注册、呼叫代理转接等功能,其源码采用的编程语言是C++;本系列文章主要是希望分析以功能实现为划分,分析其源码实现,所采用的源码版本是5.5版本。一、多线程角色划分在gnugk5.5中,为了实现对特定的任务进行多线程执行,其内部实现了一个多线程模型。按角色划分为Agent(代理)、Worker(执行者)、Job(具体的任务),这三个角色;其相互之间的关系是Agent管理Worker,而Worker执行Job,其中Worker继承原创 2020-11-15 12:04:19 · 414 阅读 · 0 评论