加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 经销商(服务器)到经销商(工人)不工作

发布时间:2020-12-16 18:47:33 所属栏目:安全 来源:网络整理
导读:在以下DEALER到DEALER连接中,Worker DEALER将[] [Foo!](即2帧消息)发送到服务器DEALER. package net.asyncimport org.zeromq.ZMQimport org.zeromq.ZMQ.Socketclass Worker(name: String) extends Runnable { import DealerToDealer._ val WorkerResponse =
在以下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

为什么服务器没有收到此消息?

此外,[] [消息]格式是否适用于经销商与经销商的交易?

解决方法

是的[] [消息]的格式是正确的,但请记住您需要阅读(所有内容)空框架然后您的消息.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读