意識の高い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に接続しました