- 博客(349)
- 收藏
- 关注
原创 zmq 中的 zmq_disconnect
int zmq_disconnect (void '*socket', const char '*endpoint') 该api 断开一个指定的连接,成功返回的是0,失败返回的是-1,并且设置错误值 ERRORS------*EINVAL*:: endpoint 无效*ETERM*::socket 被终止*ENOTSOCK*::socket无效*ENOENT
2016-12-09 14:30:58 761
原创 zmq中的 zmq_curve_keypair
int zmq_curve_keypair (char *z85_public_key, char *z85_secret_key); 该api 随机生成公有键和密码键,调用该函数需要提供两个缓冲区,每个缓冲区至少41那么么大.public_key 和 secret_key 会通过这两个缓冲区获得 成功返回的是0, 失败返回的是-1example:cha
2016-12-09 14:30:04 699
原创 zmq 中的 zmq_curve
zmq_curve 安全认证 对于服务器, 应用程序 应该在socket设置ZMQ_CUREV_SERVER选项,并且设置这个ZMQ_CURVE_SECRETKEY选项去提供secret-key,而应用程序不会提供public-key,它仅仅是被用于客户端 对于客户端, 应用程序用public-key 设置ZMQ_SERVER_SERVERKEY选项
2016-12-09 14:29:21 840
原创 zeromq 中的 zmq_ctx_term
int zmq_ctx_term (void '*context') 销毁一个zmq的context并且回收资源 成功返回的是0,失败返回的是-1. *EFAULT*:: context 无效*EINTR*:: 被信号终止
2016-12-09 14:28:41 595
原创 zeromq中zmq_ctx_shutdown
int zmq_ctx_shutdown (void '*context'); 该api导致当前进程中的指定context中的任何阻塞操作 立即返回,并且设置错误为 ETERM, ,该函数调用后仍然需要去调用zmq_ctx_term去回收资源 成功返回的是0,失败返回的是-1,并且设置错误码 ERRORS------*EFAULT*:: 设置的错误码无效
2016-12-09 14:27:50 662
原创 zmq_ctx_set
int zmq_ctx_set (void '*context', int 'option_name', int 'option_value'); 该api 设置 context的选项值 option_name的值如下: ZMQ_IO_THREADS: 标识着context中线程池中线程的个数ZMQ_MAX_SOCKETS: 标识这context允许存在的最大连接
2016-12-09 14:27:20 707
原创 zeromq 中的zmq_ctx_new
void *zmq_ctx_new () 该api 创建一个新的 zmq的context 失败返回的是NULL
2016-12-09 14:26:43 1229
原创 zeromq中的zmq_ctx_get
int zmq_ctx_get (void '*context', int 'option_name'); 该api 获得 context的选项值 option_name的值如下: ZMQ_IO_THREADS: 标识着context中线程池中线程的个数ZMQ_MAX_SOCKETS: 标识这context允许存在的最大连接数ZMQ_IPV6: 标识着ipv6
2016-12-09 14:25:59 339
原创 zeromq 中的 zmq_ctx_destory
int zmq_ctx_destroy (void '*context');该api 结束一个zmq的 context,成功返回的是0,失败返回的是-1.并设置errno的值 *EFAULT*:: 提供的context无效*EINTR*:: 被一个信号终止
2016-12-09 14:25:15 513
原创 zeromq中zmq_connect
int zmq_connect (void '*socket', const char '*endpoint'); 该api的作用是连接到指定的地址,成功返回的是0,失败返回的是-1,并且设置errno值 ERRORS------*EINVAL*:: endpoint是无效的*EPROTONOSUPPORT*:: 传输协议不支持*ENOCOMPATPRO
2016-12-09 14:24:34 1947
原创 zeromq 中的 zmq_close
int zmq_close (void '*socket'); 该api的作用是关闭一个套接字,成功返回的是0.失败返回的是-1,并且设置errno的值 ENOTSOCK: socket 是无效的.
2016-12-09 14:23:50 544
原创 zeromq 中的 zmq_bind
zmq_bind:该api ,在一个socket上接受一个正在连接的连接 int zmq_bind (void '*socket', const char '*endpoint'); 它 绑定 socket到一个本地的端口,并且在这个端口上接受一个正在准备接入的连接 这个endpoint 是一个字符串,包含协议,地址,端口example: “tcp://
2016-12-09 14:23:17 2936
原创 zeromq 中的sockets
zmq中的socket 提供了一个抽象的异步消息队列,其精准的队列语义依赖于socket的类型,创建一个socket,可以用zmq_socket,关闭一个socket可以用zmq_close. 获取socket的选项可以用zmq_getsockopt设置socket的选项,可以用zmq_setsockopt, 建立连接可以用zmq_bind,zmq_connect , 在套接字的基础上我们可以
2016-12-09 10:07:30 341
原创 zeromq 中的消息
初始化一个消息 : zmq_msg_init zmq_msg_init_size zmq_msg_init_data 接受或者发送一个消息: zmq_msg_send zmq_msg_recv 访问一个消息: zmq_msg_d
2016-12-09 09:48:03 212
原创 zeromq 在ubuntu 下的编译命令,以及使用时的注意事项
gcc test.c -o test -lzmq在使用zmq 的api之前, 必须要先创建zmq的 'context', 当退出程序的时候, 我们应该销毁这个 context,创建一个新的context , 使用 zmq_ctx_new, 设置这个context的属性, 我们可以用zmq_context_set, 获取这个context的属性, 可以用zmq_ctx_ge
2016-12-09 09:36:41 495
原创 Ubuntu 下搭建 zmq + c/c++ 开发环境
1. 下载zmq 的源码2. 解压,3. 进入builds 目录下的 cmake目录4. sudo ./ **.sh5. 在build_make目录下有生成文件,6. 将bind_make目录下的lib文件复制到上一个目录下7.在/etc/profile 修改环境变量 export C_INCLUDE_PATH=$C_INCLUDE_PA
2016-12-08 17:45:37 2918 1
原创 生成unix时间戳的办法
long long timeInMilliseconds(void) { struct timeval tv; gettimeofday(&tv,NULL); return (((long long)tv.tv_sec)*1000)+(tv.tv_usec/1000);}
2016-12-08 17:35:19 665
转载 linux 下修改最大连接数的办法
1、修改用户进程可打开文件数限制在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。可使用ulimit命令查看系统允许当前用户进程打开的文件数限制:[speng@as4 ~]$ ulimit
2016-12-08 17:34:00 9787
原创 redis之zset
Ziplist 数据结构的定义 Zskiplist的操作 Zset的结构定义 Zset的函数操作 Dict结构体的定义 dictAPI dict *dictCreate(dictType *type, void *privDataPtr);int
2016-12-08 17:32:56 271
原创 zmq 中的cs 模式总结
zmq 中的 cs模式 zmq 中 的 网络编程, server: zmq_ctx_new 创建环境,即启动线程池,初始化一些结构体等等一些预备操作,,, zmq_socket 创建套接字,就是linux c中 的socket, zmq_bind绑定地址并对进行监听(linux c中是 bind listen),然后 我们就可以send ,
2016-12-08 17:31:27 838
原创 zmq 学习总结
// 非线程安全 zeromq api 学习总结: 1. 返回值为void *的, 失败是null(大多数) 2. 返回值是 int的, 与linux c 一样, 失败为-1,成功为0(大多数)zmq_socketvoid* zmq_socket(void* context, int type); 成功返回一个不透
2016-12-08 17:30:33 4997 3
原创 redis中的zset
跳跃表 skiplist typedef struct zset { // 字典,键为成员,值为分值 // 用于支持 O(1) 复杂度的按成员取分值操作 dict *dict; // 跳跃表,按分值排序成员 // 用于支持平均复杂度为 O(log N) 的按分值定位成员操作 // 以及范围操作 zskiplist
2016-12-08 17:27:52 472
原创 zmq 中的事件
extern "C"{#include }#pragma comment(lib,"libzmq_d.lib")#include #include #include int read_msg(void* s, zmq_event_t* event, char* addr){zmq_msg_t msg1, msg2;zmq_msg_in
2016-12-08 10:59:50 1428
原创 zmq 中的事件类型
ZMQ_EVENT_CONNECTED:链接已建立 当和远程的另一端的连接建立好的时候,ZMQ_EVENT_CONNECTED事件会被触发。同步和异步事件都会发生触发此事件。事件值是新连接的socket的FD。 ZMQ_EVENT_CONNECT_DELAYED:同步连接失败,仍在进行重试 当一个请求立即连接的尝试被延迟并且仍然在尝试的时候,此事件被触发。事件值
2016-12-08 09:52:58 1670
原创 zeromq 的发布 订阅模式
订阅者模式 // weatherUpdateClient.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"/* 订阅者模式*/extern "C"{#include }#pragma comment(lib,"libzmq_d.lib")#include #include #def
2016-12-07 17:40:23 2273
原创 zeromq 的 ZMQ_DEALER 模式
ZMQ_DEALER 模型 该模型是对请求响应套接字的扩展, 每个消息的发送是通过轮询调度算法去实现. 其 send和 recv 是不受限制 的 example: server: // ZMQ_DECLARE_SERVER.cpp : 定义控制台应用程序的入口点。// #include "stdafx.h"#include
2016-12-07 15:18:28 9363
原创 zeromq 中的zmq_socket 中的 ZMQ_REP 和 ZMQ_REQ
// 非线程安全 zmq_socketvoid* zmq_socket(void* context, int type); 该API 会根据context , type创建一个不透明的套接字句柄. 并且是没有初始化连接的 也没有和任何端口联系在一起,如果是客户端,这时就需要用zmq_connect去连接到服务器 如果是服务器,需要去用zmq_b
2016-12-07 14:13:06 6743
原创 zeromq 测试用例,一个简单的接受浏览器信息的例子
#include #include extern "C"{#include #include }#pragma comment(lib,"libzmq_d.lib")int main(int argc, char* argv[]){ // 初始化环境 void * context = zmq_ctx_new();if (!context)
2016-12-06 20:18:22 1050
原创 zeromq 和 vs2013环境搭建
第一步下载源码包 找到然后:然后引入相应的头文件和库文件 然后将bin目录下的动态库文件赋值到生成目录下
2016-12-06 20:17:14 1481 1
原创 ffmpeg之av_dump_format的使用,打印流的信息
#include #include extern "C"{#include #include #include }#pragma comment(lib,"avcodec.lib")#pragma comment(lib,"avutil.lib")#pragma comment(lib,"avformat.lib")int main(int
2016-12-05 16:25:59 7731
原创 ffmpeg之如何获得一个媒体文件的AVStream,并从该基础上获得AVCodec,AVCodecContext
#include #include extern "C"{#include #include #include }#pragma comment(lib,"avcodec.lib")#pragma comment(lib,"avutil.lib")#pragma comment(lib,"avformat.lib")int main(int
2016-12-05 16:16:49 1462 1
原创 ffmpeg之将av_log,av_log_set_level的用法和意义
AV_LOG: // 该函数是打印ffmpeg中的日志.AV_LOG_SET_LEVEL: //这个函数是用来设置日志的标准, 其意义是指: 设置日志打印的标准, 高于这个标准的将不会打印 Example: #include #include extern "C"{#include #include #include }#pragma commen
2016-12-04 20:32:23 7662
原创 ffmpeg之将avi格式的视频和音频分离
#include "stdafx.h"#include extern "C"{#include #include #include }#pragma comment(lib,"avcodec.lib")#pragma comment(lib,"avformat.lib")#pragma comment(lib,"avutil.lib")int _tm
2016-11-23 18:24:12 1478
原创 MFC中的控件
MFC的各种控件使用 静态控件,包括图片,静态文本和分组框,默认ID都是IDC_STATIC. 按钮控件: 原形按钮,记住要加group属性. register: 声明为寄存器变量 explicit: 禁止自动转换 mutable修饰的变量在常函数中也可以被修改了 组合框
2016-11-20 17:43:30 391
原创 MFC中的CListCtrl
// 创建 图标列表m_ilNormal.Create(MAKEINTRESOURCE(IDB_NORMAL), 32, 1, RGB(255, 255, 255));m_ilSmall.Create(MAKEINTRESOURCE(IDB_SMALL), 16, 1, RGB(255, 255, 255));//将图像列表设置到控件m_list.SetImageList(&m_i
2016-11-20 17:42:30 348
原创 MFC中的CImageList
CImageListCListCtrl中 //插入 itemint index = m_list.InsertItem(0, L"软件安装包", 0);m_list.SetItemText(index, 2, L"文件夹");
2016-11-20 17:41:34 303
原创 MFC中的CFileDialog
CFileDialog( BOOL bOpenFileDialog, // TRUE,打开,FALSE保存 LPCTSTR lpszDefExt = NULL, // 在保存对话框中,表示文件类型 LPCTSTR lpszFileName = NULL, // 保存对话框中,表示默认的文件名; DWORD dwFlags = OFN_HIDEERADONLY, /
2016-11-20 17:40:49 290
原创 MFC中的CDialog类
CDialog::CDialog 构造 CDialog 对象。CDialog::Create 初始化 CDialog 对象。 创建无模式对话框并将它附加到 CDialog 对象。 CDialog::CreateIndirect 在内存(基于的不是资源从创建对话框模板的无模式对话框)。 CDialog::DoModal 调用模式对话框并返回,在执行。 CD
2016-11-20 17:39:48 7653
原创 mfc中的对话框
MFC的对话框... 分类: 模式 非模式相关类 CDialog类 - 父类是CWnd类.提供了对话框的基本操作. CCommonDialog类 - 父类是CDialog类,称为通用对话框类,包括以下6个子类 分别是文件对话框,颜色对话框,字体对话框,查找替换对话框页面设置对话框和打印对话
2016-11-20 17:38:56 294
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人