1、基于控制台输入通信 (Akka2.6.4,Scala2.13.1)
package akka
import akka.actor.{Actor, ActorRef, ActorSelection, ActorSystem, Props}
import com.typesafe.config.{Config, ConfigFactory}
import scala.io.StdIn
/**
* 服务器启动程序
*/
object NetworkServerActor {
private val host: String = "127.0.0.1"
private val port: Int = 9999 // 默认端口为2552
// 2.5.30
private val config: Config = ConfigFactory.parseString(
s"""
|akka.actor.provider="akka.remote.RemoteActorRefProvider"
|akka.remote.netty.tcp.hostname=$host
|akka.remote.netty.tcp.port=$port
|akka.remote.netty.tcp.bind-hostname=$host
|akka.remote.netty.tcp.bind-port=$port
|akka.remote.log-received-messages=on
|akka.remote.log-sent-messages=on
|akka.remote.enabled-transports = ["akka.remote.netty.tcp"]
|""".stripMargin)
// 2.6.4
private val newConfig: Config = ConfigFactory.parseString(
s"""
akka{
actor{
provider="akka.remote.RemoteActorRefProvider"
allow-java-serialization=on
}
remote{
enabled-transports=["akka.remote.netty.tcp"]
artery{
transport=tcp
canonical.hostname=$host
canonical.port=$port
}
}
}
""")
private val serverSystem: ActorSystem = ActorSystem.apply("hooSystemServer", newConfig)
def main(args: Array[String]): Unit = {
val serverActorRef: ActorRef = serverSystem.actorOf(Props[ServerActor], "serverActor")
serverActorRef ! "start"
}
}
/**
* 客户端启动程序
*/
object NetworkClientActor {
private val (host, port, serverHost, serverPort) = ("127.0.0.1", 9998, "127.0.0.1", 9999)
private val config: Config = ConfigFactory.parseString(
s"""
|akka.actor.provider="akka.remote.RemoteActorRefProvider"
|akka.remote.netty.tcp.hostname=$host
|akka.remote.netty.tcp.port=$port
|akka.remote.netty.tcp.bind-hostname=$host
|akka.remote.netty.tcp.bind-port=$port
|akka.remote.log-received-messages=on
|akka.remote.log-sent-messages=on
|akka.remote.enabled-transports = ["akka.remote.netty.tcp"]
|""".stripMargin)
private val newConfig: Config = ConfigFactory.parseString(
s"""
akka{
actor{
provider="akka.remote.RemoteActorRefProvider"
allow-java-serialization=on
}
remote{
enabled-transports=["akka.remote.netty.tcp"]
artery{
transport=tcp
canonical.hostname=$host
c