bbs.ChinaUnix.net
首页 | 微博 | 新闻 | Linux | FreeBSD | AIX | Windows | 博客 | 论坛 | 存储 | 网络 | 人才 | Wiki | 资料 | 读书 | 手册 | 下载 | 空间 | 搜索
  免费注册 | 忘记密码 | 会员登录 | 搜索 | 帮助 


Think开发环境(提供基础的跨平台开发库及重量级工具)

  首页 » 论坛 » C/C++ »
[打印] [收藏] [本帖文本页] [推荐此主题给朋友]

提供跨平台的C语言库,适合开发TCP/IP通讯程序,已支持AIX、HP-UX、Solaris、FreeBSD、Linux和Windows操作系统
本人辛苦了四年,颠覆多次,终成这个发布版,现在作为unix-center的开源项目,任何非册用户进入此链接都可以下载
http://unix-center.org/projects/enigma1983       厚道点的朋友,下完了别忘了过来支持一下本贴啊!
对通讯类程序感兴趣的建议下载使用,高手、初学者都可以找到有用的东西
本项目的QQ群,群号:21555812,群名:UNIX

本库的功能介绍:
1。配制文件:
          不管什么程序总要读取配制文件吧?
          我的配制文件特别之处在于:支持继承、别名、覆盖、include、行内注释

2。日志:
          程序总要记点运行日志吧?
          我的日志接口既支持记到本地的文件中,也可以通过socket发送远程的日志服务器,由日志服务器进行落地
          看日志有时也很麻烦,得telnet,切换到哪个目录下,再来个vi,再来查找
          我提供了一个logview的程序,通过一个命令即可查看远程机器上日志,并可进行相关搜索定位过滤
          如果日志有好几百兆,vi是打不开的,查找也很慢,这时候logview优点就体现出来了
          如果你想监控某个日志,logview -m name即可得到这个日志后续记录的内容了,没必要telnet,再用tail -f查看

3。命令行参数、环境变量、配制文件三合一:
          程序需要的参数,光从配制文件里获取不够的,
          从这三个地方获取,又使用了不同的接口,也不便于编程
          接口简单,又不能批量读取配制,在配制参数较多时,也会有不便之处。
          我的库中既提供了单个单个的获取参数的接口,也提供了很方便的批量读取参数的接口

4。字符编码转换:
          8583类协议,有很多十六进制码转二进制码,BCD码。。。,本库的提供的一系列函数,让你做这些事得心应手,8583协议解析这次没有开放,以后整理一下再给大家

5。通讯语言:
          写通讯类程序总要用到语言吧(也可称为协议)
          如果用XML语言来定义协议,解析效率会很差,协议定义复杂了,别人也很难解析
          8583类协议吧,又不支持字段乱序存放,1、2、3、4等位元必须依次存放,而且做字段嵌套也麻烦
          本人定义的GL语言,简单到极致,就是域号、域长度、域内容,很好解析,也很好嵌套,也可以乱序存放,增加字段,删除字段都很容易

6。TCP库封装:
          connect,listen,accept,send,recv,close,select特别是前三个,总要做个封装吧,总不能把sockaddr这种东西留给用户层做吧

7。通讯框架:
           仅仅封装几个系统函数对开发复杂的通讯程序还远远不够吧?
           本框架提供了单进程处理多个socket连接的框架,你只把建好的连接注册进来,再注册一个数据处理函数来处理接收到数据,发送数据时,尽管往缓冲区里发就是了,至于数据怎么缓冲的,各个socket怎么管理的,都不用关心了

8。定时器框架:
           光处理网络数据还不够,有些事是要定时触发的(如心跳等),提供一个好用定时器框架,做起来就很方便了
           只需要注册一些定时器到框架中即可,定时器要包含多长时间触一次及到了时间调用什么函数进行处理

9。DBF文件存取接口:
           DBF文件虽然是老东西了,但还是有很多系统在用,即使没用了,用来存存简单数据还是不错的
           DBF文件格式也不是很复杂,看懂了还是比较好解析的,但是要写出好用的接口来就是那么容易了
           本人接用SQLAPI的接口形式,非常容易使用


本项目内的配制文件接口支持以下规则(think_cfg.h/c):
配制文件规则:
1:后者覆盖前者(后面的配制覆盖前面的配制,类似SHELL,后面定义的值会覆盖前面定义的值)
2:别名(值以$符号开头的,将取$后面的配制值,相当于变量,如果觉得名字起得不好,可以再起一个别名)
3:继承(带域的配制将继承全局配制,不带域或域为空即为全局配制,域即用[]括起来的部分,域可以同名,像C++的public成员一样,多写几段public也一样)
4:嵌套(类似C语言的include,无限嵌套)
5:实时赋值(类似shell,后面的配制将根据前面的配制,立即赋值)
6:就近取值(带域的别名取值时,先在域内查找名字,找不到时再找全局的配制,其实和继承一个意思)
7:搜索路径(在指定的一些路径下查找配制文件,类似C语言的头文件查找路径)
8:注释(#后的字符为注释,#在行首且后跟include的除外)
9:宽松格式(行首,行尾,域名前后(不包括中间),#号前后,$号前后,=号前后,配制名前后,配制值前后,这些地方的空白符(空格、TAB符)都将被忽略)

例:
配制文件1:global.cfg:
lsnip=127.0.0.1                        #此配制不属于任何域,因此为全局配制,类似全局变量,带域的变量称为局部变量,局部变量将覆盖全局变量
logaddr=tcp://127.0.0.1:10000
logflag=debug,print                # debug,normal,info,key,warn,error,fatal
                                # trunc,excl,print,quiet

[specialcfg]                        # 这里开始为局部变量
name=enigma1983
email=enigma1983@163.com



配制文件2:logserver.cfg:
#include <global.cfg>           #引入另一个配制文件global.cfg
[logserver]
logname=logserver
logaddr=                        # logaddr将为空,而不是tcp://127.0.0.1:10000
#logflag=                        # [logserver].logflag将为debug,print
ip=$lsnip                        # ip将取值为127.0.0.1
port=10000
port=10008                      #port将取值10008
logpath=../log

此文件已加至项目中,可以从文件中的版本号确认你的版本是不是最新的,欢迎常来逛逛!

[ 本帖最后由 enigma1983 于 2009-7-4 18:24 编辑 ]
1

评分人数

    • prolj: 我很大方,这块不感冒,纯支持可用积分 + 10



详细介绍下啊,用法、实例等等
__________________________________
欢迎访问ToFree社区
www.tofree.org



项目的网页上有相关设计与说明文档,请找一下
日志服务器logserver与各个工具tools都是用think库进行开发的,看看程序知道了,使用还是很简单的
Windows平台的编译脚本和工程文件都在相应的win32目录下



呵呵 不错,谢谢 还提供了AIX的测试平台。。。。



pad

[ 本帖最后由 xinglp 于 2009-6-30 13:34 编辑 ]
__________________________________
有Linux C工作的联系我



能简要的说一下这东西干啥能用的上吗?

跟libevent / boost-asio 等跨平台网络驱动 有什么却别?



厉害,顶一下
__________________________________
菜鸟!



也有这种高手啊,平生少见



网上已经有不少开源通讯框架,但它们都做得功能太全、安装包太大,不是普通人能维护得了的,你只能选择使用而不能修改,本人做这个项目的初衷是提倡原创,不管功能多强,效率多高,一定要容易使用,容易维护!
另外,本人只提供了一个比较通用的框架,代码量在整个项目中的比例还是比较低的,提倡在有特殊需要的场景中使用本项目的基本库,构建一些自己认为更好的通讯框架!



厉害,顶一下


Copyright © 2001-2010 ChinaUnix.net All Rights Reserved     联系我们:

感谢所有关心和支持过ChinaUnix的朋友们    转载本站内容请注明原作者名及出处

京ICP证041476号


清除 Cookies - ChinaUnix - Archiver - WAP - TOP