免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 50902 | 回复: 172
打印 上一主题 下一主题

Think开发环境(提供基础的跨平台开发库及重量级工具)  关闭 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-24 22:37 |只看该作者 |倒序浏览
提供跨平台的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可用积分 +10 收起 理由
prolj + 10 我很大方,这块不感冒,纯支持

查看全部评分

论坛徽章:
0
2 [报告]
发表于 2009-06-24 23:18 |只看该作者
详细介绍下啊,用法、实例等等

论坛徽章:
0
3 [报告]
发表于 2009-06-24 23:33 |只看该作者
项目的网页上有相关设计与说明文档,请找一下
日志服务器logserver与各个工具tools都是用think库进行开发的,看看程序知道了,使用还是很简单的
Windows平台的编译脚本和工程文件都在相应的win32目录下

论坛徽章:
0
4 [报告]
发表于 2009-06-24 23:57 |只看该作者
呵呵 不错,谢谢 还提供了AIX的测试平台。。。。

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:53:172015亚冠之水原三星
日期:2015-06-02 16:34:202015年亚冠纪念徽章
日期:2015-10-19 18:13:37程序设计版块每日发帖之星
日期:2015-11-08 06:20:00
5 [报告]
发表于 2009-06-25 00:18 |只看该作者
pad

[ 本帖最后由 xinglp 于 2009-6-30 13:34 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2009-06-25 00:31 |只看该作者
能简要的说一下这东西干啥能用的上吗?

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

论坛徽章:
0
7 [报告]
发表于 2009-06-25 01:02 |只看该作者
厉害,顶一下

论坛徽章:
0
8 [报告]
发表于 2009-06-25 08:44 |只看该作者
也有这种高手啊,平生少见

论坛徽章:
0
9 [报告]
发表于 2009-06-25 09:02 |只看该作者
网上已经有不少开源通讯框架,但它们都做得功能太全、安装包太大,不是普通人能维护得了的,你只能选择使用而不能修改,本人做这个项目的初衷是提倡原创,不管功能多强,效率多高,一定要容易使用,容易维护!
另外,本人只提供了一个比较通用的框架,代码量在整个项目中的比例还是比较低的,提倡在有特殊需要的场景中使用本项目的基本库,构建一些自己认为更好的通讯框架!

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:49:03
10 [报告]
发表于 2009-06-25 09:14 |只看该作者
厉害,顶一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP