自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

The power of C, the secret of MD

A problem is chance to do your best

  • 博客(58)
  • 资源 (7)
  • 收藏
  • 关注

原创 使用gSOAP开发实例(7) 基于HTTPS的基本认证(Basic Authentication)

<br /><br />经过前几节的讲解,相信大家都能够熟练地开发gSOAP应用程序,甚至跨平台也不是问题。但是,诸如stock、weather、exchange这些应用都是面向大众提供的免费资源,不是企业级的应用,绝大多数都不需要用户认证。而那些商业化的应用却恰恰相反,大部分都要求客户端提供这样那样的验证。<br /> <br />由于有认证的免费资源实在难找,我只好把公司正在使用的一个服务的wsdl裁剪一下,拿到这里作为实例,裁剪后的wsdl只保留一个echo接口,顾名思义,就是客户端送什么字符串上来,

2010-08-17 12:23:00 10768 2

原创 使用gSOAP开发实例(6) 在HP-UX下编译gSOAP-2.7.17

<br /><br />使用gSOAP开发实例(6) 在HP-UX下编译gSOAP-2.7.17<br /> <br />gSOAP号称是跨平台的工具包,不过毕竟是属于g字头的,如果没有了一系列GNU组件的支持,在其他类Unix系统编译就会遇到不少困难。<br /> <br />gSOAP的README说得也不是很清楚,只提到依赖于这些组件:<br />1. Automake tools (makeand GNU m4) to configure and build<br />2. Bisonh

2010-08-09 17:37:00 6255 1

原创 使用gSOAP开发实例(5) libxml2解析SOAP响应消息

电信provisioning系统中,常常需要与远程服务器实时交换一些数据,以完成用户的请求。由于简单对象访问协议(Simple Object Access Protocol, SOAP)的流行,许多涉及到第三方的应用,我们一般都比较乐意使用SOAP来开发。不过,由于可能涉及到公司的机密,本系列教程的开发实例尽量采用在网上已经公开的Web Service资源。前面四节的教程,分别采用了股票信息和天气预报的例子。而这两个实例有一个共同点,SOAP响应消息的数据结构相对简单,只需要按拟定的次序,事先约定返回数据代

2010-07-26 22:25:00 8250 3

原创 使用gSOAP开发实例(4) iconv解决中文乱码问题(续)

<br />电信provisioning系统中,常常需要与远程服务器实时交换一些数据,以完成用户的请求。由于简单对象访问协议(Simple Object Access Protocol, SOAP)的流行,许多涉及到第三方的应用,我们一般都比较乐意使用SOAP来开发。不过,由于可能涉及到公司的机密,本系列教程的开发实例尽量采用在网上已经公开的Web Service资源。<br /> <br />上一节,讲解了用iconv解决gSOAP输出的中文文本乱码的问题。在本节中,我们用一个天气预报客户端的例子,简述一

2010-07-23 22:05:00 5998 2

原创 使用gSOAP开发实例(3) iconv解决中文乱码问题

<br />电信provisioning系统中,常常需要与远程服务器实时交换一些数据,以完成用户的请求。由于简单对象访问协议(Simple Object Access Protocol, SOAP)的流行,许多涉及到第三方的应用,我们一般都比较乐意使用SOAP来开发。不过,由于可能涉及到公司的机密,本系列教程的开发实例尽量采用在网上已经公开的Web Service资源。<br /> <br />我开发SOAP应用程序已经有一定的经验,在C/C++环境下一般使用gSOAP,而在Java环境下一般采用axis2

2010-07-21 22:26:00 5281 3

原创 使用gSOAP开发实例(2) 股票信息服务端程序

<br />电信provisioning系统中,常常需要与远程服务器实时交换一些数据,以完成用户的请求。由于简单对象访问协议(Simple Object Access Protocol, SOAP)的流行,许多涉及到第三方的应用,我们一般都比较乐意使用SOAP来开发。不过,由于可能涉及到公司的机密,本系列教程的开发实例尽量采用在网上已经公开的Web Service资源。<br /> <br />上文已经交待了gSOAP在Linux环境下的编译方法和客户端的实例程序,本文继续讲解其服务端程序的开发。由于不可能

2010-07-19 20:52:00 6234 7

原创 使用gSOAP开发实例(1) 股票信息客户端程序

<br />gSOAP是一套开源的C/C++软件工具包,使用它能够很方便地开发SOAP网页服务和基于XML的应用程序,就像JAVA里面的axis。<br /> <br />首先,我们需要从以下地址下载最新版本的gSOAP 2.7.17:<br />https://sourceforge.net/projects/gsoap2/files/<br /> <br />其次,gSOAP依赖于Bison和Flex,编译gSOAP的时候会用到,如果没有,从这里下载:<br />Bison:http://www.gnu

2010-07-08 21:28:00 8222 11

原创 使用libz和libbz2的API在项目中集成gzip和bzip2功能

<br />libz提供了一套与gzip有关的API,libbz2提供了一套与bzip2有关的API。我们可以利用其中几个常用的函数,在自己的项目中实现压缩、解压缩功能。这两个库文件一般在linux系统中都会有,如果没有,可以分别到以下网址下载其源代码:<br /> <br />gzip: http://www.gzip.org/<br />bzip2: http://www.bzip.org/index.html<br /> <br />libz最有用的函数有四个:<br /> <br />gzFile

2010-07-01 21:17:00 7837 2

原创 Destroy, to be continue (2010-6-30)

<br />基于BER编码的CDR解码程序——destroy,已经于2010年6月底正式发布了1.0版本。在我看来,目前的destroy还显得很稚嫩,还有许多可以改进和值得改进的地方。以下简单列出其未来的开发要点,由于该项目都是在业余时间进行的,开发进度容易受本职工作所影响,但是,如果时间允许,我觉得将来的destroy在功能上,是十分令人期待的。<br /> <br />1.     批量处理。Destroy 1.0每执行一次,只能解码一个文件,希望不久的将来,能够识别正则表达式,实现批量处理<br />

2010-06-30 21:54:00 873

原创 发布一个基于BER编码的CDR文件高速解码程序——destroy

<br />主要功能:理论上,该程序可以解码任何基于BER编码的CDR文件。不过,由于我在工作中只接触到Ericsson的某些版本的CDR,而且,用于解析CDR文件的描述文件来源于供应商,我的程序也只能识别来自于这个供应商的描述文件,所以,移植到其它厂商的环境下可能会产生一些问题。希望大家试用过后能够把各种情况反馈给我,最好能够把BER编码的CDR样本及其描述文件发给我,这样我就能够作为依据,完善这个程序了。<br /> <br />主要特点:高速!该程序比目前我在网上见到过的所有能够使用的同类型程序都要快

2010-06-29 21:09:00 2363 2

原创 GSM可以说的秘密(4) Provisioning与CDR处理,一个硬币的两面

<br />上两回讲到,GSM网络有两大路线,并且通过一个完整呼叫的例子,讲述了最基本的NSS与BSS的呼叫通讯路线及其架构。本篇讲述一下另外一条路线,也就是经过MD的路线。<br /> <br />根据之前的描述,MD首先是一个规范化从OSS到NSS的请求的平台,主要是为客户提供一些开通、终止或者暂停某些服务的功能,这一过程,业内称之为provisioning。另一方面,MD也规范化了从NSS到OSS的数据处理,主要是根据NSS记录的数据用量,为OSS提供计费账单和其他有利于辅助运营的依据,这一过程,我们

2010-06-19 22:15:00 2948 3

原创 使用getopt_long()从命令行获取参数

<br />众所周知,C程序的主函数有两个参数,其中,第一个参数是整型,可以获得包括程序名字的参数个数,第二个参数是字符数组指针或字符指针的指针,可以按顺序获得命令行上各个字符串参数。其原形是:<br />int main(int argc, char *argv[]);<br />或者<br />int main(int argc, char **argv);<br /> <br />如果有一个解析CDR的程序,名叫destroy,负责将一个二进制格式的CDR文件转换为文本文件,输出的文本的样式由另外一个

2010-06-13 21:24:00 11311 1

原创 GSM可以说的秘密(3) 最基本的NSS与BSS的架构与一次完整呼叫的流程

为避免一次讲解太多而导致重点缺失,本节介绍NSS与BSS时只介绍必不可少的部分。最基本的BSSBTS,全称Base Transceiver Station,译作基站收发台。我们日常生活中可以见到许多BTS,每个BTS都管辖一个片区,为保证信号质量,相邻的BTS在一般情况下,会呈等距离排列,这样一来,他们所管辖的片区的边界,就成了蜂窝状的结构,这就是GSM蜂窝数字移动技术这个说法的由来BSC,全称Base Station Controller,译作基站控制器。一个BSC会对应多个BTS,也就是说,BSS呈现星

2010-06-02 23:03:00 3968 3

原创 GSM可以说的秘密(2) 我的工作内容与GSM组织架构

本博客内所有文章皆为原创,未经同意,请勿转载,谢谢!写在前面的话http://blog.csdn.net/yui/archive/2010/05/31/5637882.aspx首先介绍一下我自己。我服务于一家移动通讯运营商,主要从事GSM核心网与OSS之间的中介设备系统的工作。读者可能要问,GSM大家都知道,那么什么是核心网呢?什么是OSS呢?回答这个问题之前,不知道有没有人想过另一个问题:手机用户之间是怎样进行通讯的?主叫用户拨打对方的号码,为什么就能够令被叫用户的手机响铃,而不是其它用户的手机响铃?可能

2010-05-31 22:02:00 3213 1

原创 GSM可以说的秘密(1) 写在前面的话

万事开头难。当我决定写这篇系列文章的时候,却不知道从何写起。因为我本身并不是GSM系统中全面的专家,只不过是由于工作上的关系,对其中某一方面有所了解,取这个题目多多少少有点吸引眼球的成分。不过,正因为如此,我相信GSM对于大多数IT从业人员来说,可以说是既熟悉,又陌生。熟悉是因为人人都会用到移动通讯,陌生是因为其技术入门门槛比较高。题目之所以定为《可以说的秘密》,第一就是希望能够把神秘的、陌生的内容,逐步描述为读者理解的、熟悉的知识。而且,由于本人水平和从事领域所限,也不可能把GSM的所有技术讲的十分透彻,

2010-05-31 21:51:00 1307 1

原创 一个没有索引引起的问题

这个案例说来也很简单。话说我们公司旧版本的mediation系统每天都需要从各个network element(NE)的服务器上采集CDR,采集程序一般都是用expect写的,其实就是ftp到对方的机器上拷贝文件过来。NE里的CDR一般不会轻易做house keep,这就要求我们的采集程序自己能够辨认哪些文件已经下载过,否则的话,全部下载过来处理,客户就要被重复计费了。因此,在本地数据库中,有一个

2010-05-28 21:56:00 949

原创 利用多线程技术优化文件读写转换处理

在电信系统CDR处理中,有大量的原始话单数据需要被读取、转换后再写入新的文件。如果使用C语言实现,一个复杂的读写转换处理过程可以分为以下几步: 从源文件中读取一块数据建立相应的数据结构并将读取的数据,以及定义源文件数据格式的配置文件,一并映射到该结构中,如果是线性的数据结构,例如NSN默认的CDR文件,一般采用单向链表,如果是非线性的数据结构,例如Ericsson默认的CDR文件,

2010-05-22 15:50:00 3534

原创 strcat在某种特定条件下的优化

strcat是C语言一个基本的字符串操作函数,它的源代码一般是这样的。  char *strcat(char *dest, const char *src){ char *tmp = dest; while (*dest) dest++; while ((*dest++ = *src++) != /0); return tmp;}  由此可见,s

2010-05-22 15:43:00 2227 4

中国移动国际漫游清算系统RAP和TAP的升级

中国移动国际漫游清算系统RAP和TAP的升级

2011-01-05

跨平台base64编解码程序带C源代码

Windows下可以直接执行exe,也可以使用VC编译 Linux/Unix下需要./configure && make && make install三部曲编译 base64 --help查看帮助,一看就会用

2010-12-23

eathd 0.1.0

这是用C语言写成的一个适用于Linux的小工具,能够比较方便地算出单个或者全部挂载点(mount point)下的磁盘使用情况,包括显示该磁盘分区的设备类型、每一块的大小、总空间大小、预留给root用户的空间大小、已使用的空间大小、可用的空间大小、已使用的空间百分比,以及占用空间最多的10个目录。

2010-12-06

发布一个基于BER编码的CDR文件高速解码程序——destroy for tru64

主要功能:理论上,该程序可以解码任何基于BER编码的CDR文件。不过,由于我在工作中只接触到Ericsson的某些版本的CDR,而且,用于解析CDR文件的描述文件来源于供应商,我的程序也只能识别来自于这个供应商的描述文件,所以,移植到其它厂商的环境下可能会产生一些问题。希望大家试用过后能够把各种情况反馈给我,最好能够把BER编码的CDR样本及其描述文件发给我,这样我就能够作为依据,完善这个程序了。 主要特点: 1. 高速!该程序比目前我在网上见到过的所有能够使用的同类型程序都要快,甚至在同等条件下,比我所在公司的供应商提供的程序还要快15%到20% 2. 支持关键字搜索。不需要把整个CDR文件的记录全部翻译成文本记录再逐个查找,而是在解码的过程中顺便完成搜索,节省时间和空间 3. 直接支持压缩格式。通常CDR文件都是经过压缩后保存在磁盘的,该程序可以直接读取经过压缩后的CDR文件,不需要把它首先解压缩,然后再解码,进一步提供效率。同时,这个程序也支持压缩输出文件,为用户提供方便。目前支持的压缩格式有gzip和bzip2 最新版本: 1. destroy 1.0.0 for Linux 2. destroy 1.0.0 for Solaris 3. destroy 1.0.0 for Tru64 依赖关系:由于该程序支持压缩格式,因此它依赖于libz和libbz2 使用方法:键入./destroy –h可以获得所有帮助信息 $./destroy -h ./destroy 1.0.0 (2010-06-28) This is a program decoding a BER encoded CDR file Author: Roy Liang Blog: http://blog.csdn.net/yui/ Usage: ./destroy -f <file_name> -o <output_name> [-c <config_name>] [-k <keyword>] [-z] [-j] -f --file the CDR file to be decoded -o --output the output file in plain text format -c --config the description file of the CDR file, if not given, use default configuration -k --keyword the keyword to search, if not given, all records will be written into output file -z --gzip gzip the result -j --bzip2 bzip2 the result -h --help print this page

2010-06-29

发布一个基于BER编码的CDR文件高速解码程序——destroy for solaris

主要功能:理论上,该程序可以解码任何基于BER编码的CDR文件。不过,由于我在工作中只接触到Ericsson的某些版本的CDR,而且,用于解析CDR文件的描述文件来源于供应商,我的程序也只能识别来自于这个供应商的描述文件,所以,移植到其它厂商的环境下可能会产生一些问题。希望大家试用过后能够把各种情况反馈给我,最好能够把BER编码的CDR样本及其描述文件发给我,这样我就能够作为依据,完善这个程序了。 主要特点: 1. 高速!该程序比目前我在网上见到过的所有能够使用的同类型程序都要快,甚至在同等条件下,比我所在公司的供应商提供的程序还要快15%到20% 2. 支持关键字搜索。不需要把整个CDR文件的记录全部翻译成文本记录再逐个查找,而是在解码的过程中顺便完成搜索,节省时间和空间 3. 直接支持压缩格式。通常CDR文件都是经过压缩后保存在磁盘的,该程序可以直接读取经过压缩后的CDR文件,不需要把它首先解压缩,然后再解码,进一步提供效率。同时,这个程序也支持压缩输出文件,为用户提供方便。目前支持的压缩格式有gzip和bzip2 最新版本: 1. destroy 1.0.0 for Linux 2. destroy 1.0.0 for Solaris 3. destroy 1.0.0 for Tru64 依赖关系:由于该程序支持压缩格式,因此它依赖于libz和libbz2 使用方法:键入./destroy –h可以获得所有帮助信息 $./destroy -h ./destroy 1.0.0 (2010-06-28) This is a program decoding a BER encoded CDR file Author: Roy Liang Blog: http://blog.csdn.net/yui/ Usage: ./destroy -f <file_name> -o <output_name> [-c <config_name>] [-k <keyword>] [-z] [-j] -f --file the CDR file to be decoded -o --output the output file in plain text format -c --config the description file of the CDR file, if not given, use default configuration -k --keyword the keyword to search, if not given, all records will be written into output file -z --gzip gzip the result -j --bzip2 bzip2 the result -h --help print this page

2010-06-29

发布一个基于BER编码的CDR文件高速解码程序——destroy for linux

主要功能:理论上,该程序可以解码任何基于BER编码的CDR文件。不过,由于我在工作中只接触到Ericsson的某些版本的CDR,而且,用于解析CDR文件的描述文件来源于供应商,我的程序也只能识别来自于这个供应商的描述文件,所以,移植到其它厂商的环境下可能会产生一些问题。希望大家试用过后能够把各种情况反馈给我,最好能够把BER编码的CDR样本及其描述文件发给我,这样我就能够作为依据,完善这个程序了。 主要特点: 1. 高速!该程序比目前我在网上见到过的所有能够使用的同类型程序都要快,甚至在同等条件下,比我所在公司的供应商提供的程序还要快15%到20% 2. 支持关键字搜索。不需要把整个CDR文件的记录全部翻译成文本记录再逐个查找,而是在解码的过程中顺便完成搜索,节省时间和空间 3. 直接支持压缩格式。通常CDR文件都是经过压缩后保存在磁盘的,该程序可以直接读取经过压缩后的CDR文件,不需要把它首先解压缩,然后再解码,进一步提供效率。同时,这个程序也支持压缩输出文件,为用户提供方便。目前支持的压缩格式有gzip和bzip2 最新版本: 1. destroy 1.0.0 for Linux 2. destroy 1.0.0 for Solaris 3. destroy 1.0.0 for Tru64 依赖关系:由于该程序支持压缩格式,因此它依赖于libz和libbz2 使用方法:键入./destroy –h可以获得所有帮助信息 $./destroy -h ./destroy 1.0.0 (2010-06-28) This is a program decoding a BER encoded CDR file Author: Roy Liang Blog: http://blog.csdn.net/yui/ Usage: ./destroy -f <file_name> -o <output_name> [-c <config_name>] [-k <keyword>] [-z] [-j] -f --file the CDR file to be decoded -o --output the output file in plain text format -c --config the description file of the CDR file, if not given, use default configuration -k --keyword the keyword to search, if not given, all records will be written into output file -z --gzip gzip the result -j --bzip2 bzip2 the result -h --help print this page

2010-06-29

一次完整呼叫的流程 by Nokia

GSM可以说的秘密(3) 最基本的NSS与BSS的架构与一次完整呼叫的流程 http://blog.csdn.net/yui

2010-06-02

空空如也

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

TA关注的人

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