Contenu connexe
Similaire à ネットワークコマンド入力に対応したツール事例
Similaire à ネットワークコマンド入力に対応したツール事例 (20)
Plus de fumoto kazuhiro (6)
ネットワークコマンド入力に対応したツール事例
- 1. ネットワークコマンド入力に対応したツール事例
株式会社CRI・ミドルウェア
花房 宏通
本資料に記載の情報や画像などのコンテンツに対する著作権・知的財産権
は、株式会社CRI・ミドルウェアに帰属します。また、当社以外の会社名や製
品名は、それぞれ各社の登録商標または商標です。
各種コンテンツの無断転載・再配布は禁止します。
- 7. ネットワークの活用
• ネットワークというと敷居が高そうだけど…
– とりあえずローカル限定での通信から始めてみる
– .NET frameworkやPythonなどは、比較的簡単にネット
ワーク機能(Socket)が使える
• 相手にコマンド投げるくらいなら
– 通信部分だけプログラマにまかせてもOK
• 今回のテーマで言うネットワークの使用用途
– あくまでツールにアクセスする1手段
– マシン同士の通信ではなく、プロセス間通信が目的
PAGE 7
- 14. メリットとデメリット
• メリット
– UIと機能を分離できる
• UIのカスタマイズがしやすい
• 分離したものを、1つのツールとして見せるのも、別々のツールと
するのも自由
– Socketに対応してさえいれば、ツールや言語、プラット
フォームを問わず利用できる
• いろんなツールやスクリプトからツールにアクセスできる。
• バッチやスクリプトで、その場的なツールを気軽に作れる
– あるデータの組み合わせでシーンを作って、連番画像として出力す
るツールとか
PAGE 14
- 15. メリットとデメリット
• デメリット
– なんだかんだ言って、作りこんでいくと大変
• 同期とか
• 通信の確立(ハンドシェイクとか)
• 接続が切れたら?
– デバッグも結構大変
PAGE 15
- 16. おまけ
• コマンドを送るPythonコード例
# ソケット作成(TCP)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(1)
for i in range(10):
try:
# 接続(HOST=IPアドレス or ホスト名, CONNECT_PORT=ポート番号)
sock.connect((HOST, CONNECT_PORT))
return sock
except socket.error, e:
time.sleep(1)
~~~~~~~~~~~~~~~~
# 送信(message=文字列)
sock.send(message)
PAGE 16
- 17. おまけ
• C#(.NET framework)の受信コード例
// 接続待ち準備
IPAddress addr = IPAddress.Parse("127.0.0.1");
var listener = new TcpListener(addr, CONNECT_PORT);
listener.Start(1);
listener.BeginAcceptTcpClient(new AsyncCallback(Accept), listener);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// 接続許可
void Accept(IAsyncResult ar)
{
var listener = ar.AsyncState as TcpListener;
if (listener != null)
{
this.networkClient = listener.EndAcceptTcpClient(ar);
this.commandStream = networkClient.GetStream();
}
}
PAGE 17
- 18. おまけ
• C#(.NET framework)の受信コード例
if (this.commandStream.DataAvailable == true)
{
byte[] receive_data = new byte[4096];
// 受信
Int32 size = this.commandStream.Read(receive_data, 0, 4096);
// 受信したデータ処理
~~~~~~~~~~~~~~~~~~~~~~~
}
PAGE 18
- 19. まとめ
• パイプラインに組み込む事を前提にしたツール開発
を行いましょう
– シンプルでコンパクトなものは組み込みやすい
• ツールにネットワーク経由で制御できる機能を持た
せると、いろいろ便利
– UIの幅が広がる
• 言語や環境の枠を超えたツールの制御が可能になる
– 自動化しやすくなる
PAGE 19