2005-01-09
[開発ログ]HSP 入門
朝から HSP 関連のホームページを見ていた。機能がいろいろあって楽しそう。 簡単なサンプルソース見てもなかなか内容が理解できなくて苦しいけど、がんばって飛び込んでみるか。
作者の基本的な思想にはすばらしいものがあって、それが実現されていて、それでここまで流行っているだろうなという印象。
--
まずはプロセス間通信のインタフェースをどうするかから。 確実そうなのは、 C で拡張機能として実装してしまうこと。これならきっとなんでもできるのだろう。まず、そのあたりを調べてみよう。
--
開発版( HSP Ver3.0 β)もあるのか。いまからはじめるなら新しいほうを使おう。
HSPによるTCP/IPサーバー・クライアント通信のスクリプト発見。
初めてソケットに挑戦するプログラムが HSP になるとは。
いろいろ変わっているようなのでやっぱり安定版にする。
サンプルを少し改造して、エコーサーバーを作ってみた。 HSP 以前にソケットをよく知らないのでかなり怪しい。
#include "hspsock.as" title "エコーサーバーテスト" *main port=999 mes "ポート"+port+"で接続を待っています..." sockmake 0,port if stat : dialog "Socket error": goto *bye a=0 repeat sockwait 0 title "CHK="+stat+"/"+a if stat>1 : dialog "Socket error": goto *bye if stat=0 : break a+ wait 10 loop mes "接続しました。("+refstr+")" ; repeat msg = "" sockget msg, 256 if stat : dialog "Socket error": goto *bye sockput msg if stat : dialog "Socket error": goto *bye ;mes msg str msg0:msg0=msg:poke msg0,1,0 if msg0="q" : break loop ; *bye sockclose mes "終了"
ruby からこんな感じで接続してみると 0.15 sec とかで終わる。ネットワークは遅いというイメージをもっていたけどこれなら申し分ない。
t = Time.now 1000.times{|i| sock.write "#{i}\n" sock.gets } p Time.now - t
とりあえず通信することはできたのでこれで次に進める。もっといい通信方法があれば後で最適化すればよい。
--
HSP の dll の ruby binding なんてよさそうだなあとか思ったり
これはとっても面白そう。でも今回はサーバーのプロトタイプを HSP で実装してみるということでやってるから、これはまた別の話。まぁ、それにしても、この方法がとても有効な気もするけど、 dll のバインディングなんて実装方法がさっぱりわからない。