LoginSignup
0
0

More than 5 years have passed since last update.

Akka で TCP接続

Last updated at Posted at 2015-06-10

意識の高いTCPクライアント・サーバーを作りたいと思っていたら「Akkaが良い」というのをどこかで見たので入門!.

要点

  • IO(Tcp)でTCP接続するためのアクターを取得できる(TCPマネージャと呼ばれる)
  • TCPマネージャにConnectメッセージを送るとTCP接続が確立

localhost:80 に接続するだけのサンプルコード

import java.net.InetSocketAddress
import akka.actor.{Props, ActorSystem, ActorLogging, Actor}
import akka.io.{Tcp, IO}

class Client(remoteAddress: InetSocketAddress) extends Actor with ActorLogging {
  import Tcp._
  import context.system

  // サーバーに接続する
  IO(Tcp) ! Connect(remoteAddress)

  // 受け取ったメッセージを処理する
  def receive = {
    case Connected(remote, local) =>
      log.info("{}に接続しました", remote)
    case CommandFailed(_) =>
      log.error("接続に失敗しました")
      context stop self
  }
}

object ConnectTCP {
  def main (args: Array[String]): Unit = {
    // アクターシステム作成
    val system = ActorSystem("MySystem")
    val remoteAddress = new InetSocketAddress("localhost", 80)
    // 新しいClientアクターをシステムに追加
    system.actorOf(Props(classOf[Client], remoteAddress))
  }
}

出力結果

[INFO] [06/10/2015 20:11:03.884] [MySystem-akka.actor.default-dispatcher-2] [akka://MySystem/user/$a] localhost/127.0.0.1:80に接続しました

参考ページ

Using TCP — Akka Documentation

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0