- 博客(14)
- 收藏
- 关注
原创 使用libxml读取分析配置文件
配置文件示例如下: 7 192.168.2.213 5730 192.168.2.230 9003 首先定义存储信息的结构体: typedef struct _partition { char ip[STRING_SIZE_MAX]; int port; } partition_
2015-11-02 19:59:54
505
原创 c语言宏定义中的#、##应用实例
#:用于字符串化,#后面的参数被转成一个字符串 ##:用于字符串的分割连接 举例: 首先定义一个字符串及其长度的结构体: typedef struct AVal { char *av_val; int av_len; } AVal;宏定义一个该类型的字符串结构: #define AVC(str) {str,sizeof(str)-1} #define SAVC(x) s
2015-11-02 18:33:57
740
原创 linux获取局域网、公网IP地址以及主机名
int IsLANIP(unsigned int nIP) { // filter LAN IP's // ------------------------------------------- // 0.* // 10.0.0.0 - 10.255.255.255 class A // 172.16.0.0 - 172.31.255.255 class
2015-10-23 19:52:13
3366
原创 Ubuntu11.04安装、配置samba
安装: #sudo apt-get install samba #sudo apt-get install smbclient 启动: sudo service smbd restart 配置: /etc/samba/smb.conf 文件尾部追加 path = /home/xxxx/samba writeable = yes ; br
2015-08-24 14:39:46
336
转载 IO阻塞、非阻塞、同步、异步理解
http://blog.youkuaiyun.com/historyasamirror/article/details/5778378 http://www.zhihu.com/question/19732473 IO分5种:blocking IO、nonblocking IO、IO multiplexing、signal driven IO(少用)、asynchronous IO 阻塞判断标准
2015-07-21 16:03:46
428
原创 linux下使用Jsoncpp
linux下使用Jsoncpp源码与项目代码一起编译时,会出现很多报错,诸如: error: missing binary operator before token "(" /usr/include/wchar.h:104:1: error: ‘__BEGIN_NAMESPACE_C99’ does not name a type /usr/include/wchar.h:107:1:
2015-07-11 09:32:23
1583
1
转载 动态链接库与静态链接库
概念 动态链接:lib文件一般是一些索引信息,记录了函数在DLL文件中的入口信息;dll文件在运行时加载到进程空间中,包含了要执行的代码逻辑,因此可知动态库中的被引用函数不会包含在可执行文件中,所以应用程序最后发布时,需要exe与dll文件一起发布。 静态链接:lib包含了函数代码(实际是各种cpp编译生成的obj的集合),在编译阶段直接将代码加入程序中;链接器从lib中获取所有的被引用函数,
2015-05-21 16:21:01
418
转载 ICE-RFC5245摘要
ICE:Interactive Connectivity Establishment 参考链接:http://tools.ietf.org/html/rfc5245 简介 ICE技术使用请求/应答模型的信令协议建立交互式连接,方便基于UDP的媒体流的NAT穿透。它也整合了STUN和TURN协议的内容,形成了完整的穿透NAT的解决方案,相对于其他解决方案,如ALGs(应用层网关)、
2015-04-21 16:17:36
836
转载 TURN概述.
TURN:Traversal Using Relays around NAT 主要参考链接:http://www.rfc-editor.org/rfc/rfc5766.txt(RFC5766)和http://www.cnblogs.com/ishangs/p/3816689.html(思路很清晰) 应用场景 STUN协议可以使内网主机获取到STUN Server看到的反射地址
2015-04-21 13:57:53
687
转载 UDP Hole punching 概述
基本思想 利用一个任何客户端都可达的服务器,在服务器上预先存储、维护客户端的UDP公用端点地址,当双方需要通信时,通过服务器的介绍获取对方的端点地址,建立直接的连接(两个客户端公网地址之间的直连)。 基本流程 假设有两个位于私网中的客户端C1和C2(可能位于同一私网),都可访问同一Server,那么流程如下: 一、C1向服务器发出请求,要求与
2015-04-20 16:49:33
1092
转载 STUN--RFC5389摘要
STUN:Session Traversal Utilities for NAT 1、概述 RFC3489的劣势:一、NAT穿透有时会失败,但没有失败补救措施;二、NAT分类算法不适用于现代的很多NAT类型;三、安全弱点。 与RFC3489不同,该文档不再把STUN描述为解决NAT穿透的完整解决方案,而是将STUN作为一种工具集成到其他更完备的解决方案中去,例如本协议
2015-04-18 16:19:28
3951
转载 STUN--RFC3489摘要
1、适用性: 不允许向内穿过NAT的TCP连接请求,不允许向内穿过对称NAT的连接请求(UDP也不行),位于同一个NAT后面的通讯端点的地址也不能通过STUN获取。 STUN不需要修改NAT,并可工作在应用实体和因特网前后间有任意数量的NAT的情况下。 2、基本原理: 用UDP简单穿过NAT(STUN),允许NAT后的实体首先发现NAT的存在和其类型,接着知道NAT分配的地址捆绑。 用
2015-04-15 18:13:51
1683
1
原创 MFC中的字符类型转换
工程用Unicode编码 MFC调用底层接口,底层需要传入char*,要将Cstring转成char*: Cstring tmpStr; USES_CONVERSION; char* needstr = T2A(tmpStr); char* 转成Cstring,直接转就行: char* tmpStr; Cstring needstr(tmpStr); 常
2015-04-02 14:14:01
450
转载 模板的特化与偏特化
模板的特化(模板参数列表指定特定类型) 首先定义一个模板: template class test { //泛化实现代码 } 然后特化模板: template //尖括号中不带任何类型,也即原模板中的参数列表都将被特化 class test //A、B用Cat,Dog特化 { //特化实现代码 } 在以后使用test时,若为 test则表示执行特化实现的代码,若传入其
2015-03-25 18:09:04
426
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人