cwb 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
cwb 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
cwb 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
cwb 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
cwb 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 LGPL
开发语言 C/C++
操作系统 跨平台
软件类型 开源软件
所属分类 Web应用开发Web框架
开源组织
地区 国产
投 递 者 索特127
适用人群 未知
收录时间 2021-05-25

软件简介

cwb(C on Web)一个轻量级,快速的 C 语言网络框架。

特性:

  • 异步IO支持
  • 事件驱动库
  • 数据序列化、编码支持

示例代码

/*    事件驱动库    */
Cwb_Event_Base *base = cwb_event_new();
assert(base);
assert(!cwb_event_watch_fd(base,serverSocket,CWB_EVENT_READ,sockethandler,NULL));
cwb_event_loop(base);
cwb_event_destroy(base);

/*    数据结构    */
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<assert.h>

#include<cwb/Ds.h>

#include"Test.h"

int main(void)
{
	Cwb_Ds *dic=cwb_ds_new(CWB_DS_DICTIONARY,CWB_DS_SKEY);
	assert(dic);

	cwb_ds_set(dic,"I","Suote127");
	cwb_ds_set(dic,"you","User");
	cwb_ds_set(dic,"he","Unknow");

	puts(cwb_ds_get(dic,"he"));
	puts(cwb_ds_get(dic,"you"));
	puts(cwb_ds_get(dic,"I"));
	
	cwb_ds_set(dic,"I","The programmer");

	puts(cwb_ds_get(dic,"I"));

	cwb_ds_set(dic,"you",CWB_DS_UNDEFINED);
	assert(cwb_ds_get(dic,"you")==CWB_DS_UNDEFINED);

	cwb_ds_destroy(dic);
	
	return 0;
}

/*    动态字符串    */
#include<assert.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#include<cwb/Dstr.h>

int main(void)
{
	char temp[1024];
	fgets(temp,1024,stdin);

	temp[strlen(temp)-1]='\0';

	Cwb_Dstr *dstr = cwb_dstr_new();
	assert(dstr);
	
	assert(cwb_dstr_assign(dstr,temp));
	Cwb_Dstr *copy = cwb_dstr_copy(dstr);

	char *s = cwb_dstr_convert(dstr,NULL,0);
	puts(s);
	char *t = strdup(s);
	cwb_dstr_appendd(dstr,&t);
	assert(!t);
	cwb_dstr_appendc(dstr,':');
	cwb_dstr_appendc(dstr,')');
	free(s);
	
	s = cwb_dstr_convert(dstr,NULL,0);
	puts(s);

	cwb_dstr_destroy(dstr);
	free(s);

	cwb_dstr_appends(copy,":)");
	s = cwb_dstr_convert(copy,NULL,0);
	puts(s);
	free(s);

	return 0;
}

 

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (0)

加载中
更多评论
暂无内容
发表了博客
2018/07/25 15:41

mysql索引

索引的优点缺点   优点:加快查询记录的速度   缺点:占用物理存储空间,会减慢写速度(update delete insert) mySQL索引支持的类型   index 普通索引   unique 唯一索引   primary key 主键   foreign key 外键   fulltext 全文索引 索引的使用   index 普通索引   primary key 主键   foreign key 外键 查看表中是否有索引字段: desc 表名; 查看索引详细信息: show index from 表名\G; (\G:每行独立显...

0
0
发表了博客
2019/01/09 17:58

tp5 引用第三方类(vendor与extend)

1.我们都知道tp5的第三方类文件主要放在vendor以及extend两个里面. 主要区别就是extend是自己定义的类文件,而vendor大部分都是composer类库文件.而如何引用这两个文件里面我们需要的文件呢? extend 主要通过use来引用 比如在extend文件里面有个lib文件夹里面有个cwb.php (extend/lib/cwb.php) 引用:use lib\cwb 而对于vendor 比如:(vendor/lib/cwb.php) 可以用助手函数vendor 与 import import('lib.cwb',VENDOR_PATH,'.class....

0
0
发表于AI & 大数据专区
2020/12/07 22:25

Nature Communications | 定量评估干旱造成的森林死亡面积

导读 越来越多的研究表明,干旱造成全球范围内大量的树木死亡,对森林生态系统的功能和服务价值造成了很大的影响。虽然干旱会影响植被的光合作用,并通过碳饥饿和水力衰竭直接引发树木死亡,但更为常见的是干旱和次生灾害的共同作用导致大规模的树木死亡。比如,高温干旱是病虫害出现的诱发因素,并可能进一步增加森林火灾的风险。在气候变化的情况下,干旱将变得更加频繁和严重,人们开始担心干旱是否会越来越容易诱发森林生态...

0
0
发表了博客
2019/12/11 14:16

cefsharp 使用代理切换ip

CefSharp提供WPF和WinForms Web浏览器控件实现,不同于Webbrowser嵌入的是IE,CefSharp在.NET应用程序中嵌入Chromium。 普通的CefSharp使用代理功能代码如下: var settings = new CefSettings(); settings.CachePath = "cache"; settings.CefCommandLineArgs.Add("proxy-server", ProxyAddress); Cef.Initialize(settings); 如果代理需要用户名和密码验证就再加一段以下代码 CefSharp.CefSharpSettings.Proxy = new CefSharp.P...

0
0
发表了博客
2013/12/30 17:59

使用dom4j解析XML例子

转自:http://blog.csdn.net/cuiweibing/article/details/1743235 包括三个文件:studentInfo.xml(待解析的xml文件), Dom4jReadExmple.java(解析的主要类), TestDom4jReadExmple.java(测试解析的结果) (由于使用csdn blog自带的代码粘贴工具会朝里加入一些"..."字符,虽然利于查看,但是不利于把代码copy出来运行,而亲自运行代码对程序员来说是很重要的,故 没有使用csdn blog自带的代码粘贴工具来插入代码,而是用着用直白的...

0
0
发表了博客
2015/06/08 09:59

三层交换技术

写新文章 三层交换 脚本 ---------------------------------------------------------------------------------------------- 2691-R1的配置: en conf t no ip do lo hostname 2691-R1 line 0 exec-time 0 0 logg sync exit int e0/1 ip add 192.168.1.1 255.255.255.0 no sh int e0/0 ip add 172.16.1.1 255.255.255.0 no sh ip route 0.0.0.0 0.0.0.0 172.16.1.254 ---------------------缺省路由下一跳到ISP网关 ip route 1...

0
0
发表了博客
2018/07/10 10:14

语料库基础学习

语料库:对语言进行全景性的透视。 语料库思想产生的背景: 电脑科技的发展,信息技术的支持; 从现象归纳原理的思考模式 语料库几个特征 语料库一定是机读的,不是为人准备的,因为其统计非常的繁杂,分析非常的繁杂; 必须是确认为真的,进入语料库的语言必须是经过挑选、筛选的 是一个有限集合,是一个语言的抽样 代表性和要研究的目的是紧密相关的 狭义的语料库只有文字,广义的语料库还有声音、视频、手语等多模态语料库 ...

0
0
发表了博客
2015/06/08 09:59

stp

stp 2009-08-04 19:15 stp试验脚本 -------------------------------------------------------------------------------------------- 3560-s1 上的配置 。。。。。。。。。。。。。。。 en conf t no ip domain-loo line 0 exec-t 0 0 logg sync exit int rang f0/1 -7 sw m t end vlan da vtp domain haier vtp server vrp pr vlan 2 name cwb vlan 3 name glb vlan 4 name xxb vlan 5 name cgb vlan 100 name ser exit conf...

0
0
发表了博客
2015/06/08 09:59

综合实验

2009-08-04 19:27 ------------------------------------------------------------------------------------------- 综合实验。。。。。 -------------------------------------------------------------------------------------------- 7206的配置。。。。。。。。。。。。 en conf t no ip domain loo ho BJ-7206 line 0 exec-t 0 0 logg sync exit int s1/0 ip add 192.168.22.1 255.255.255.0 no sh int s1/1 ip add 192....

0
0
发表了博客
2013/01/16 16:25

DOM4j读取XML文件(SAXReader)

DOM4j读取XML文件(SAXReader) 一、一个很好的SAXReader读写xml文件的例题; 总结: Document document=new SAXReader.reader(“xml文路径/文件名xxx.xml”);//得到Document对象 Element root = document.getRootElement()//获得根节点 Iterator iterator=root.elementIterator(); //从根节点遍历子节点 Iterator iterator=Element.elementIterator(); //再从子节点在遍历其子节点 对节点访问其属性用:Attribute leaderAttr ...

0
4
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
0 评论
1 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部