服务器经销商组装服务器,经销商(服务器)到经销商(工人)不工作

Kevin Meredith

6

scala

zeromq

在下面DEALER的DEALER连接中,Worker DEALER发送[][Foo!](即2帧消息)到服务器DEALER.

package net.async

import org.zeromq.ZMQ

import org.zeromq.ZMQ.Socket

class Worker(name: String) extends Runnable {

import DealerToDealer._

val WorkerResponse = "Foo!".getBytes

val id = name.getBytes

override def run(): Unit = {

val context = ZMQ.context(1)

val worker = context.socket(ZMQ.DEALER)

worker.setIdentity(id)

worker.connect(s"tcp://localhost:$Port")

runHelper(worker)

}

private def runHelper(worker: Socket): Unit = {

println(s"Worker ${name}: sending Empty + ${show(WorkerResponse)}.")

worker.send(Empty, ZMQ.SNDMORE)

worker.send(WorkerResponse, 0)

println(s"Worker ${name}: sent")

val message = show(worker.recv(0))

println(s"Worker ${show(worker.getIdentity)}: received message: $message.")

runHelper(worker)

}

}

object DealerToDealer {

def show(xs: Array[Byte]): String =

new String(xs)

val Port = 5555

val Empty = "".getBytes

val WorkerMessage = "Bar!".getBytes

val WorkLimit = 25

def main(xs: Array[String]): Unit = {

val context = ZMQ.context(1)

val server = context.socket(ZMQ.DEALER)

new Thread(new Worker("Bob")).run()

server.bind(s"tcp://*:$Port")

runHelper(server, 0)

}

private def runHelper(server: Socket, sent: Int): Unit = {

if (sent > WorkLimit ) {

println(s"SERVER: sent the '$WorkerMessage' message ${WorkLimit} times. shutting down.")

sys.exit(0)

}

else {

println(s"SERVER: sending Empty + ${show(WorkerMessage)}.")

server.send(Empty, ZMQ.SNDMORE)

server.send(WorkerMessage, 0)

println(s"SERVER: sent")

val message = server.recv(0)

println(s"SERVER: received message: ${show(message)}.")

runHelper(server, sent + 1)

}

}

}

但是,在运行它时,只有print语句显示发送Worker的消息.未显示实际收到的服务器

[info] Running net.async.DealerToDealer

[info] Worker Bob: sending Empty + Foo!.

[info] Worker Bob: sent

为什么不Server收到这条消息?

另外,是[][Message]格式正确的DEALER来DEALER沟通?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值