# zeromq 库模块帮助文档

## zeromq 成员列表 <a id="zeromq" href="#zeromq">&#x23;</a>

消息支持库  
建议结合protobuf库使用

### zeromq._dll <a id="zeromq._dll" href="#zeromq._dll">&#x23;</a>
libzmq.dll  

[返回对象:dllModuleObject](https://www.aardio.com/zh-cn/docs/library-reference/raw/_.html#dllModuleObject)

### zeromq.context() <a id="zeromq.context" href="#zeromq.context">&#x23;</a>
[返回对象:zeromqContextObject](#zeromqContextObject)

### zeromq.context(IO线程数) <a id="zeromq.context" href="#zeromq.context">&#x23;</a>
创建环境上下文  
参数可选,默认值为1  
可选使用参数@2指定多线程共享名称

### zeromq.lasterr() <a id="zeromq.lasterr" href="#zeromq.lasterr">&#x23;</a>
检测最后调用API发生的错误  
如果存在错误则返回两个值:  
错误信息,错误代码

### zeromq.message() <a id="zeromq.message" href="#zeromq.message">&#x23;</a>
创建消息对象,初始化默认缓冲区  

[返回对象:zmqMessageObject](#zmqMessageObject)

### zeromq.message(缓冲区,缓冲区大小,析构函数,附加指针) <a id="zeromq.message" href="#zeromq.message">&#x23;</a>
创建消息对象,所有参数可选  
缓冲区如果是字符串或可转换为字符串的对象,则忽略后续所有参数,  
缓冲区如果为空,则可选使用第二个参数指定长度,其他参数忽略,  
缓冲区如果为pointer指针,则必须使用第二个参数指定长度,  
缓冲区如果是cdata对象,则忽略第二个参数  
缓冲区如果是结构体或数值,则调用raw.malloc转换为cdata对象  
如果指定析构函数,当不再需要消息缓冲区时回调该函数,  
缓冲区指针,附加指针参数将作为回调的实参.

### zeromq.pollin <a id="zeromq.pollin" href="#zeromq.pollin">&#x23;</a>
阻塞直到至少发生一个接收事件

### zeromq.pollin(-1,socket,...) <a id="zeromq.pollin" href="#zeromq.pollin">&#x23;</a>
参数@1指定超时,以毫秒为单位,-1为一直等待,  
参数@2可以是任意个zmq_socket对象,也可以是包含多个对象的数组  
成功返回包含事件代码的数组

### zeromq.pollout <a id="zeromq.pollout" href="#zeromq.pollout">&#x23;</a>
阻塞直到至少发生一个发送事件

### zeromq.pollout(-1,socket,...) <a id="zeromq.pollout" href="#zeromq.pollout">&#x23;</a>
参数@1指定超时,以毫秒为单位,-1为一直等待,  
参数@2可以是任意个zmq_socket对象,也可以是包含多个对象的数组  
成功返回包含事件代码的数组

### zeromq.version() <a id="zeromq.version" href="#zeromq.version">&#x23;</a>
返回主版本号,次版本号,修订版本号

## zeromqContextObject 成员列表 <a id="zeromqContextObject" href="#zeromqContextObject">&#x23;</a>

### zeromqContextObject.term() <a id="zeromqContextObject.term" href="#zeromqContextObject.term">&#x23;</a>
释放对象  
该函数在线程结束时会作为析构函数自动调用.

### zeromqContextObject.zmq_socket() <a id="zeromqContextObject.zmq_socket" href="#zeromqContextObject.zmq_socket">&#x23;</a>
[返回对象:zmqSocketObject](#zmqSocketObject)

### zeromqContextObject.zmq_socket(协议类型) <a id="zeromqContextObject.zmq_socket" href="#zeromqContextObject.zmq_socket">&#x23;</a>
创建pair模式socket,可自行配对,  
任何一方都可以做为服务端

### zeromqContextObject.zmq_socket_dealer() <a id="zeromqContextObject.zmq_socket_dealer" href="#zeromqContextObject.zmq_socket_dealer">&#x23;</a>
创建socket  

[返回对象:zmqSocketObject](#zmqSocketObject)

### zeromqContextObject.zmq_socket_pub() <a id="zeromqContextObject.zmq_socket_pub" href="#zeromqContextObject.zmq_socket_pub">&#x23;</a>
创建socket,与pub模式配对  
任何一方都可以做为服务端  

[返回对象:zmqSocketObject](#zmqSocketObject)

### zeromqContextObject.zmq_socket_pull() <a id="zeromqContextObject.zmq_socket_pull" href="#zeromqContextObject.zmq_socket_pull">&#x23;</a>
创建socket,与push模式配对  
任何一方都可以做为服务端  

[返回对象:zmqSocketObject](#zmqSocketObject)

### zeromqContextObject.zmq_socket_push() <a id="zeromqContextObject.zmq_socket_push" href="#zeromqContextObject.zmq_socket_push">&#x23;</a>
创建socket,与pull模式配对  
任何一方都可以做为服务端  

[返回对象:zmqSocketObject](#zmqSocketObject)

### zeromqContextObject.zmq_socket_reply() <a id="zeromqContextObject.zmq_socket_reply" href="#zeromqContextObject.zmq_socket_reply">&#x23;</a>
创建socket,与request模式配对  
任何一方都可以做为服务端  

[返回对象:zmqSocketObject](#zmqSocketObject)

### zeromqContextObject.zmq_socket_request() <a id="zeromqContextObject.zmq_socket_request" href="#zeromqContextObject.zmq_socket_request">&#x23;</a>
创建socket,与reply模式配对  
任何一方都可以做为服务端  

[返回对象:zmqSocketObject](#zmqSocketObject)

### zeromqContextObject.zmq_socket_router() <a id="zeromqContextObject.zmq_socket_router" href="#zeromqContextObject.zmq_socket_router">&#x23;</a>
创建socket  

[返回对象:zmqSocketObject](#zmqSocketObject)

### zeromqContextObject.zmq_socket_sub() <a id="zeromqContextObject.zmq_socket_sub" href="#zeromqContextObject.zmq_socket_sub">&#x23;</a>
创建socket,与sub模式配对  
任何一方都可以做为服务端  

[返回对象:zmqSocketObject](#zmqSocketObject)

### zeromqContextObject.zmq_socket_xpub() <a id="zeromqContextObject.zmq_socket_xpub" href="#zeromqContextObject.zmq_socket_xpub">&#x23;</a>
创建socket  

[返回对象:zmqSocketObject](#zmqSocketObject)

### zeromqContextObject.zmq_socket_xsub() <a id="zeromqContextObject.zmq_socket_xsub" href="#zeromqContextObject.zmq_socket_xsub">&#x23;</a>
创建socket  

[返回对象:zmqSocketObject](#zmqSocketObject)

## zmqMessageObject 成员列表 <a id="zmqMessageObject" href="#zmqMessageObject">&#x23;</a>

### zmqMessageObject.close() <a id="zmqMessageObject.close" href="#zmqMessageObject.close">&#x23;</a>
释放消息对象

### zmqMessageObject.copy(消息对象) <a id="zmqMessageObject.copy" href="#zmqMessageObject.copy">&#x23;</a>
复制消息缓冲区

### zmqMessageObject.getData() <a id="zmqMessageObject.getData" href="#zmqMessageObject.getData">&#x23;</a>
返回缓冲区指针

### zmqMessageObject.getMore() <a id="zmqMessageObject.getMore" href="#zmqMessageObject.getMore">&#x23;</a>
是否有更多的消息帧

### zmqMessageObject.getProperty("字符串参数") <a id="zmqMessageObject.getProperty" href="#zmqMessageObject.getProperty">&#x23;</a>
获取消息属性,属性名可指定：Socket-Type，Identity，Resource

### zmqMessageObject.getSize() <a id="zmqMessageObject.getSize" href="#zmqMessageObject.getSize">&#x23;</a>
返回缓冲区长度

### zmqMessageObject.getString() <a id="zmqMessageObject.getString" href="#zmqMessageObject.getString">&#x23;</a>
以字符串形式返回缓冲区内容

### zmqMessageObject.move(消息对象) <a id="zmqMessageObject.move" href="#zmqMessageObject.move">&#x23;</a>
移动消息缓冲区

### zmqMessageObject.recv(zmq_socket对象,选项) <a id="zmqMessageObject.recv" href="#zmqMessageObject.recv">&#x23;</a>
发送消息  
成功返回长度,失败返回null

### zmqMessageObject.send(zmq_socket对象,选项) <a id="zmqMessageObject.send" href="#zmqMessageObject.send">&#x23;</a>
发送消息  
成功返回长度,失败返回null

## zmqSocketObject 成员列表 <a id="zmqSocketObject" href="#zmqSocketObject">&#x23;</a>

### zmqSocketObject.bind("tcp://*:26666地址") <a id="zmqSocketObject.bind" href="#zmqSocketObject.bind">&#x23;</a>
绑定

### zmqSocketObject.close() <a id="zmqSocketObject.close" href="#zmqSocketObject.close">&#x23;</a>
关闭socket

### zmqSocketObject.connect("tcp://localhost:26666地址") <a id="zmqSocketObject.connect" href="#zmqSocketObject.connect">&#x23;</a>
连接

### zmqSocketObject.disconnect"tcp://localhost:26666地址") <a id="zmqSocketObject.disconnect"tcp://localhost:26666地址")" href="#zmqSocketObject.disconnect"tcp://localhost:26666地址")">&#x23;</a>
断开连接

### zmqSocketObject.getsockopt(选项,结构体) <a id="zmqSocketObject.getsockopt" href="#zmqSocketObject.getsockopt">&#x23;</a>
值必须是一个结构体对象  
成功返回更新的结构体对象.

### zmqSocketObject.recv(缓冲区,长度,选项) <a id="zmqSocketObject.recv" href="#zmqSocketObject.recv">&#x23;</a>
接收消息帧  
成功返回长度,失败或超时返回null  
参数一可选指定缓冲区指针.  
所有参数可选,如果仅指定长度则自动创建缓冲区

### zmqSocketObject.recvMsg(消息对象,选项) <a id="zmqSocketObject.recvMsg" href="#zmqSocketObject.recvMsg">&#x23;</a>
接收消息  
成功返回长度,失败或超时返回null  
如果参数一不是一个消息对象,则创建临时消息对象并尝试返回接收的字符串  
选项为_ZMQ_DONTWAIT时立即返回不阻塞,收不到返回null  
选项为可选参数可省略

### zmqSocketObject.send(缓冲区,长度,选项) <a id="zmqSocketObject.send" href="#zmqSocketObject.send">&#x23;</a>
发送消息帧\参数一可以是字符串或指针.n选项为_ZMQ_DONTWAIT时立即返回不阻塞,收不到返回null  
选项为可选参数可省略

### zmqSocketObject.sendMsg(消息对象,选项) <a id="zmqSocketObject.sendMsg" href="#zmqSocketObject.sendMsg">&#x23;</a>
发送消息  
成功返回长度,失败返回null  
参数一也可以是能转换为字符串的对象、或结构体、buffer指针等  
选项为可选参数可省略

### zmqSocketObject.setRecvTimeout() <a id="zmqSocketObject.setRecvTimeout" href="#zmqSocketObject.setRecvTimeout">&#x23;</a>
设置接收超时，单位毫秒

### zmqSocketObject.setSendTimeout() <a id="zmqSocketObject.setSendTimeout" href="#zmqSocketObject.setSendTimeout">&#x23;</a>
设置发送超时，单位毫秒

### zmqSocketObject.setsockopt(选项,结构体) <a id="zmqSocketObject.setsockopt" href="#zmqSocketObject.setsockopt">&#x23;</a>
值必须是一个结构体对象  
成功返回true

### zmqSocketObject.unbind("tcp://*:26666地址") <a id="zmqSocketObject.unbind" href="#zmqSocketObject.unbind">&#x23;</a>
解除绑定

### 自动完成常量
_ZMQ_AFFINITY=4  
_ZMQ_BACKLOG=0x13  
_ZMQ_DEALER=5  
_ZMQ_DELIMITER=0x1F  
_ZMQ_DONTWAIT=1  
_ZMQ_EVENTS=0xF  
_ZMQ_EVENT_ACCEPTED=0x20  
_ZMQ_EVENT_ACCEPT_FAILED=0x40  
_ZMQ_EVENT_ALL=0xFFFF  
_ZMQ_EVENT_BIND_FAILED=0x10  
_ZMQ_EVENT_CLOSED=0x80  
_ZMQ_EVENT_CLOSE_FAILED=0x100  
_ZMQ_EVENT_CONNECTED=1  
_ZMQ_EVENT_CONNECT_DELAYED=2  
_ZMQ_EVENT_CONNECT_RETRIED=4  
_ZMQ_EVENT_DISCONNECTED=0x200  
_ZMQ_EVENT_LISTENING=8  
_ZMQ_EVENT_MONITOR_STOPPED=0x400  
_ZMQ_FD=0xE  
_ZMQ_FORWARDER=2  
_ZMQ_HWM=1  
_ZMQ_IDENTITY=5  
_ZMQ_IO_THREADS=0x1  
_ZMQ_LINGER=0x11  
_ZMQ_MAX_SOCKETS=0x2  
_ZMQ_MCAST_LOOP=0xA  
_ZMQ_MSG_MASK=0x81  
_ZMQ_MSG_MORE=1  
_ZMQ_MSG_SHARED=0x80  
_ZMQ_NOBLOCK=1  
_ZMQ_PAIR=0  
_ZMQ_POLLERR=4  
_ZMQ_POLLIN=1  
_ZMQ_POLLOUT=2  
_ZMQ_PUB=1  
_ZMQ_PULL=7  
_ZMQ_PUSH=8  
_ZMQ_QUEUE=3  
_ZMQ_RATE=8  
_ZMQ_RCVBUF=0xC  
_ZMQ_RCVMORE=0xD  
_ZMQ_RECONNECT_IVL=0x12  
_ZMQ_RECONNECT_IVL_MAX=0x15  
_ZMQ_RECOVERY_IVL=9  
_ZMQ_REP=4  
_ZMQ_REQ=3  
_ZMQ_ROUTER=6  
_ZMQ_SNDBUF=0xB  
_ZMQ_SNDMORE=2  
_ZMQ_SOCKET_LIMIT=0x3  
_ZMQ_STREAMER=1  
_ZMQ_SUB=2  
_ZMQ_SUBSCRIBE=6  
_ZMQ_SWAP=3  
_ZMQ_THREAD_PRIORITY=0x3  
_ZMQ_THREAD_SCHED_POLICY=0x4  
_ZMQ_TYPE=0x10  
_ZMQ_UNSUBSCRIBE=7  
_ZMQ_VSM=0x20  
_ZMQ_XPUB=9  
_ZMQ_XSUB=0xA  
