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 のバインディングなんて実装方法がさっぱりわからない。