blog.monophile.net

Takaaki Yamamoto

東京工業大学において計算機科学と応用数学を学び、 情報科学芸術大学院大学[IAMAS]においてメディア表現を専攻し修了。 digitiminimi Inc. において、インフラエンジニアとして生計をたててている。

各種環境の構築と管理を承ります。

  • 仮想環境: Openstack, GCP, AWS, Azure, ...
  • アプリケーション: WordPress, GitLab, Redmine, ...

List

DartでSocket通信

概要

DartでSocket通信の例。

test.dart

テスト用なので、プロセス内でサーバとクライアントを立てます。 サーバはオウム返しをするだけで、 クライアントは標準入力からのデータをサーバに投げて、 サーバから受け取ったデータを標準出力に吐き出します。

import "dart:io";
import "dart:async";
const int PORT = 60000;

void server() {
  Future<ServerSocket> fss = ServerSocket.bind(InternetAddress.ANY_IP_V4, PORT);
  fss.then((ServerSocket ss) {
    ss.listen((Socket s) => s.listen((List<int> data) => s.add(data)));
  });
}

void client() {
  Future<Socket> fs = Socket.connect(InternetAddress.LOOPBACK_IP_V4, PORT);
  fs.then((Socket s) {
    stdin.listen((List<int> data) => s.add(data));
    s.listen((List<int> data) => stdout.write(new String.fromCharCodes(data)));
  });
}

void main() {
  server();
  client();
}

実行

実行してみると、挙動はcatみたいになると思いますが、内部ではSocket通信が使われてます。 めちゃくちゃ無駄です。

$ dart test.dart
hoge
hoge