草庐IT

zmq_recv

全部标签

python - 在 ZeroMQ 中调用 recv_pyobj() 时如何添加主题过滤器?

ZeroMQ提供了关于如何设置pub-subpattern的非常好的文档。使用主题过滤器,如theapidocs中所述.ZeroMQ还为convenience提供了方法socket.send_json()和socket.send_pyobj()(以及recv对应方法).在pub-sub示例中,主题过滤器(一个字符串)附加到消息(也是一个字符串)的开头。使用内置序列化时,有什么方法可以设置主题过滤器吗?如果我使用send_pyobj()发送一个dict或Class,我不能在它前面附加一个字符串。 最佳答案 首先要注意的是,ZeroMQ

python - paramiko Channel.recv() 究竟是如何工作的?

我很难理解recv()函数的工作原理。http://docs.paramiko.org/en/1.13/api/channel.html#paramiko.channel.Channel.recv我知道每次调用该函数时都会收到一个数据block,但是有人可以详细说明该数据的结构或大小吗?假设我发送了一个命令date,我注意到:第一次阅读得到:“日期”二读得到:实际响应(CDT2014年6月9日星期一12:04:17)第三次阅读得到:提示但这如何处理终端上随机出现的调试信息呢?只要实际响应小于最大字节数(nbytes),前面的模式是否成立?如果超过nbytes会怎样?根据要求,我添加了以

python - 为什么 recv 在接收到所有数据之前不阻塞?

为什么recv系统调用不阻塞直到接收到所有数据?每次我看到recv调用时,它都处于一个while循环中,它一直在调用recv直到所有数据都存在。为什么不首先使用recvblock? 最佳答案 您可以使用MSG_WAITALL标志请求recvblock,直到收到所有数据。但是,如果信号到达,已经执行了一些工作(即接收部分数据)的系统调用不能自动重新启动以接收其余部分。因此,即使使用MSG_WAITALL,在某些情况下recv调用可能会在缓冲区满之前返回,您必须准备好处理这些情况。鉴于此,许多人只是选择循环,而不去理会鲜为人知的标志,例

python - 通过 zmq ipc 发送现有的字典

我正在尝试通过zmqipc套接字发送一个现有的字典,我可以用这段代码发送一个字符串,但我不能发送一个字典对象importzmq,datetimed={0:('356612022462768','EVENT',0,'2012-12-2615:50:16',-20.22216,-70.13723,6.44,134.0,1,2,'18743230',datetime.datetime(2013,2,10,9,6,2,362734))}if__name__=="__main__":context=zmq.Context()publisher=context.socket(zmq.PUB)pub

python - 已经安装了 pyzmq 但仍然得到 "ImportError: No module named zmq"

我正在尝试让ipythonnotebook运行。我已经安装了pyzmq。你知道为什么它仍然给出这个错误吗? 最佳答案 您会看到该错误(手动安装pyzmq)的唯一原因是pyzmq安装到与ipython运行所在位置不同的pythonpath。如果您按照安装说明进行操作,应该没有问题:easy_installipythonpyzmqtornado#orpipinstallipythonpyzmqtornado也有可能安装程序看到依赖已经在另一个位置得到满足并且没有做任何事情,然后ipython可能正在运行一个不同的pythonpath而没

python - 如何从 Python 中的另一个线程中止 socket.recv()

我有一个等待连接的主线程。它生成客户端线程,这些线程将回应来自客户端(在本例中为telnet)的响应。但是说我想在一段时间后关闭所有套接字和所有线程,比如在1个连接之后。我该怎么做?如果我从主线程执行clientSocket.close(),它不会停止执行recv。只有当我首先通过telnet发送内容时它才会停止,然后它会在进一步发送和接收时失败。我的代码是这样的:#EchoserverprogramimportsocketfromthreadingimportThreadimporttimeclassClientThread(Thread):def__init__(self,clie

python - 从 zmq.error.ZMQError : Address already in use 恢复

我在运行PAIR时按了Ctrl-C与ZMQ的模式(非阻塞客户端服务器)连接。后来当我尝试运行REQ-REP时(阻塞客户端单服务器连接)模式,我不断收到Addressalreadyinuse错误。我尝试使用netstat-ltnp|grep:运行netstat但这没有列出任何过程。那么到底是谁在使用这个地址?还有如何优雅地关闭这样的套接字连接? 最佳答案 问题一:如果你这样做sudonetstat-ltnp,在Linux类型的操作系统上,您很可能会看到拥有该端口的进程。用kill-9杀死它.问题二:当您退出程序时,关闭您的套接字,然后

go - 尝试 Recv 返回 channel 关闭,尽管它是打开的

我正在尝试在Go中编写一个函数来监视channel并记录通过它发送的内容。funcmonitorChannel(inChannel,outChannelreflect.Value,fidint64,cond*sync.Cond){for{cond.L.Lock()vartoLogreflect.ValuevarokboolfortoLog,ok=inChannel.TryRecv();!toLog.IsValid();{//whilenovaluereceivedif!ok{cond.L.Unlock()return}cond.Wait()}outChannel.Send(toLog)

混帐克隆 : GnuTLS recv error (-9): A TLS packet with unexpected length was received

我正在尝试克隆一个git存储库,但在执行命令时收到以下错误:GnuTLSrecverror(-9):ATLSpacketwithunexpectedlengthwasreceived.我的客户端机器是Ubuntu14.04。 最佳答案 这是@IvanTernovtsiy所说的已知错误,但有解决方法从您的系统中删除当前的GITsudoapt-getpurgegit下载GITdebgit_1.9.1-1_amd64.deblink执行下载的DEB。 关于混帐克隆:GnuTLSrecverro

c++ - 为什么 sys socket recv 函数不填充数据而是返回字节长度?

我正在编写一个C++客户端。客户端通过TCP协议(protocol)成功连接到服务器并发送数据。我写了下面的代码来接收数据:chardata[9];intreceived_size=recv(fd,data,9,flags);std::stringstr{data};//str.empty()istrue哪些标志是MSG_NOSIGNAL。问题是执行此行后,received_size为9,但数据长度为零。 最佳答案 如果recv返回一个值,那么这是接收到的字节数。问题是您使用了错误的函数来确定您接收的数据。您正在使用的std::st