NSStream : socat

XcodeのSwift/Playground環境が何かと便利に思う今日このごろですが、ネットワーク経由でデータを取得して、Playgroundでそのデータを利用してみました。
サーバはとても多機能なネットワークツールのsocatコマンドをMacのコンソールで走らせ、クライアントはPlaygroundからNSStreamを使いました。

brew install socat

Xcode 7.1.1 / Mac OSX 10.10.5

まずechoサーバに対して接続してテストします。socatコマンドとcatコマンドで以下のようにして実行します。

nsstream02

次は、このようなデータ送受信のしくみはそのままに、任意のデータを返してみます。
ノンプロックで通信するしくみをC言語で実装します。

(こちらのsleepは不要でした。結果を出してしまったのでこのままで・・)

gcc -o nb nb.c

nsstream01

ランダムで返す値は、socatコマンドの表示がわかりやすいように、文字の領域にしました。
Swift側で受信をせず送信のみにして、netcat(nc)コマンドを使うと、パイプ処理ができます。

参考 :
http://stackoverflow.com/questions/26625373/how-to-implement-a-socket-connection-using-a-swift-playground
http://d.hatena.ne.jp/mFumi/20101002/1286003738