运行简单的远程 Akka 应用程序

2023-11-26

我正在尝试设置一个简单的服务器/客户端 akka(使用 Akka 2.0.3)应用程序,但无法连接。在此之前,这是基本代码:

import com.typesafe.config.ConfigFactory
import akka.actor.Actor
import akka.actor.ActorSystem
import akka.actor.Props

class Server extends Actor {
  def receive = {
    case s: String => println("Got " + s)
  }
}

val serverSystem = ActorSystem("server", ConfigFactory.load(ConfigFactory.parseString("""
  akka {
    actor {
      provider = "akka.remote.RemoteActorRefProvider"
    }
    remote {
      transport = "akka.remote.netty.NettyRemoteTransport"
      netty {
        hostname = "localhost"
        port = 5678
      }
    }
  }
""")))

val server = serverSystem.actorOf(Props[Server], name = "server")
Thread.sleep(500)
println("started")
Thread.sleep(500)

val clientSystem = ActorSystem("client", ConfigFactory.load(ConfigFactory.parseString("""
  akka {
    actor {
      provider = "akka.remote.RemoteActorRefProvider"
    }
  }
""")))
val remoteServer = clientSystem.actorFor("akka://server@XXX:5678/user/server")

remoteServer ! "HEY"

Thread.sleep(3000)
clientSystem.shutdown
serverSystem.shutdown

我知道配置应该放在外部文件中。
如果你更换XXX with localhost有用:

started
Got HEY

但是如果我使用我的外部(已解析)IP(家庭路由器后面的PC)XXX the HEY消息永远不会到达。我认为这是由于某些防火墙问题造成的,并在我的路由器上转发了相关的 TCP 和 UDP 端口,并在我的 Windows 防火墙上打开/允许它们。所以之后以下代码起作用了(也XXX替换为我的外部IP)。开始了ServerTest可以通过一个连接ClientTest:

import java.net.ServerSocket
object ServerTest extends App {
  println("START server")
  val ss = new ServerSocket(5678)
  val s = ss.accept()
  println(s)
  println("END")
}

import java.net.Socket
object ClientTest extends App {
  println("START client")
  val s = new Socket("XXX", 5678)
  println(s)
  println("END")
}

所以这不是端口/防火墙问题,不是吗?!那么问题出在哪里呢???


localhost通常意味着127.0.0.1,这只是计算机中可能存在的众多接口(卡)之一。绑定到 localhost 的服务器不会接收连接到其他接口(包括具有外部地址的接口)的连接。

您应该指定服务器中的外部地址,或者0.0.0.0这意味着“绑定到所有接口”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

运行简单的远程 Akka 应用程序 的相关文章

随机推荐

  • 在 macOS 的 SwiftUI 中更改 TextEditor 背景颜色

    我想更改 macOS 上 SwiftUI 文本编辑器的背景颜色 下面的代码 用于 iOS 是否有一个变体适用于 NSTextField 而不是 UITextView Thanks struct ContentView View init U
  • 社交网络应用程序数据库设计:如何改进此架构?

    背景 我正在为诗人和作家开发一款社交网络应用程序 让他们能够分享诗歌 收集反馈并与其他诗人交流 我很少接受过数据库设计方面的正式培训 但我一直在阅读书籍 SO 和在线数据库设计资源 试图在不过度设计的情况下确保性能和可扩展性 数据库是MyS
  • 复杂数据类型的 Typedef

    我试图从语法的角度理解 C 如何处理复杂 typedef 的底层机制 请考虑下面的示例 问题末尾包含参考文献 typedef int p1d 10 是正确的声明 即 p1d 这里是指向数组的指针 10 个整数 就像使用 Array 类型声明
  • Angular 2 下载文件:结果损坏

    我正在尝试使用 Angular 2 TypeScript 和 Web API 下载文件 我遇到的问题是 当下载文本文件时 该文件是文件 但是当尝试下载 PDF 文件时 例如 它已损坏 下载的文件内容都是乱码废话 我使用的 TypeScrip
  • 如何在 Python 中存储变量/首选项以供以后使用

    我正在用 Python 编写 Windows 程序 并且希望保存变量和用户首选项 以便即使在程序终止并重新启动后我也可以调用它们 有没有在 Windows 机器上执行此操作的理想方法 会 winregWindows 注册表适合这项任务吗 或
  • C++ 运算符重载的多态性

    如何使纯虚函数成为运算符 功能 我在基课上喜欢这个吗 int运算符 0 编译器给出错误 在派生类中operator 函数 编译器说派生类不能 make 因为下面的类是抽象的 我知道我无法创建抽象类的对象 但现在我尝试创建派生类对象 这是代码
  • Django 和 Postgres - 百分位数(中位数)和分组依据

    我需要计算每个卖家 ID 的期间中位数 参见下面的简化模型 问题是我无法构建 ORM 查询 Model class MyModel period models IntegerField null True default None sell
  • Django 设计登录表单并添加额外的跨度

    我有两个关于表单样式的问题 对于我的登录 我使用 Django 的默认身份验证功能 并且没有手动编写任何视图或表单 urls py urlpatterns patterns django contrib auth views url r l
  • 在 Centos 6 上安装最新的 mono

    我是 Linux 新手 字面意义上的新手 用过几次 我尝试通过 yum 安装 mono 但我得到了一个不支持 NET 4 的过时版本 如何安装单声道 2 10 8 好吧 这就是我想出的并且它对我有用 基于this文章 yum install
  • Node.js 服务器向 404.html 页面发送“404 未找到”消息

    我正在使用 node js 我想知道如何显示 404 html 而不是 404 Not Found 消息 这是我的 server js var http require http url require url path require p
  • java.lang.NoClassDefFoundError: org/apache/http/conn/scheme/SchemeSocketFactory

    我尝试通过 AWS 凭证发送邮件 但出现异常 java lang NoClassDefFoundError org apache http conn scheme SchemeSocketFactory 我添加了这些罐子 aws java
  • C# 中条件简写类似于 SQL 'in' 关键字

    在 C 中是否有一种简写方式可以这样写 public static bool IsAllowed int userID return userID Personnel JohnDoe userID Personnel JaneDoe Lik
  • HTML5 History API:“返回”到另一个页面,然后再次“前进”时显示 JSON

    我有一个页面 其中有几个搜索 过滤按钮 单击这些按钮时 会通过 AJAX 刷新下面列表的内容 在此过程中 我正在修改历史记录 通过pushstate 以便新的过滤页面可以添加书签 因此后退按钮可以工作 我还在监听 popstate 事件 以
  • 获取设备的 MAC 地址 - 当 wifi 关闭时

    我使用以下代码查找 Android 设备的 MAC 地址 WifiManager manager WifiManager getSystemService Context WIFI SERVICE WifiInfo info manager
  • Android Material 按钮,图标位于文本之上

    是否可以有一个在其文本顶部带有图标的材质按钮 如下所示 如果是 您能用一些代码解释一下吗 谢谢 现在您可以使用该属性iconGravity top 就像是
  • 在 Pandas 中连接两个大型数据集的最佳方法

    我正在从需要连接的两个不同数据库下载两个数据集 当我将它们存储为 CSV 时 每个文件大约有 500MB 左右 分别适合内存 但当我加载两者时 有时会出现内存错误 当我尝试将它们与 pandas 合并时 我肯定会遇到麻烦 对它们进行外部连接
  • 同一域上跨页面但使用不同端口的本地存储

    我试图在同一域的各个页面上使用本地存储 但由于某种原因 如果页面使用不同的端口 Firefox 会跨页面创建相同存储数据的多个实例 所以如果我设置一些东西www example com 80去时不会持续www example com 800
  • 如何在 Zend 应用程序中将字符集设置为 UTF-8?

    我正在开发一个 Zend 应用程序 我的数据库中的数据以 utf8 unicode ci 编码 我在 application ini 中声明 resources view encoding UTF 8 但每当我尝试检索包含特殊字符的字符串时
  • 如何使图像完全适合轮播(Bootstrap)

    我已经制作了一个功能齐全的旋转木马 但问题是旋转木马的右侧出现了白色块 我想摆脱它 请帮忙 div class carousel inner div class item active img src Jellyfish jpg alt i
  • 运行简单的远程 Akka 应用程序

    我正在尝试设置一个简单的服务器 客户端 akka 使用 Akka 2 0 3 应用程序 但无法连接 在此之前 这是基本代码 import com typesafe config ConfigFactory import akka actor