blog.monophile.net

コンピュータのこととかのメモ。

Takaaki Yamamoto

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

work

各種システム構築と管理を承ります。

Cloud PlatformOpenstack, GCP, AWS, Azure, ...
Openstackkeystone, glance, cinder, swift, neutron, nova, ...
VirtualizationQEMU+KVM, LXD/LXC, Docker, ...
OSDebian GNU/Linux, Ubuntu, CentOS, ...
NetworksIPSec, L2TP, VXLAN, WirelessAP, ...
WebAppsWordPress, GitLab, Redmine, ...
Configuration ManagementAnsible, Terraform, ...
MonitoringNagios, Munin, ...

posts

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