HSP3.0に同梱されたスクリプト「CLIENT2.hsp」ですが
sockcheck で、データーを着信していればループを続け
逆に着信していなければループを抜ける構造になっています。
前後のスクリプトからすると
恐らく "if stat!=0 : break" では無く "if stat =0 : break"
が正しいのだと思いますが…sockgetの動作に関して質問です。
このサンプルですと、sockgetを実行したときに待ち時間が発生しています。
sockgetは着信していないときにはエラーではなく、
着信するまで待機という扱いになるのでしょうか?(全くタイムアウトを設けていない?)
逆にいえば、スクリプトを円滑に動作させる場合には
sockcheck が必須と言う事で間違いないでしょうか?
希望としては、sockget系の命令を実行したときに、
sockcheckと同等のチェックを行い、statに結果を返し
オプションで実際に受信するかどうかを指定…とかになると面倒がないなぁと
#include "hspsock.as"
title "TCPクライアントテスト"
adr="127.0.0.1"
port=999
mes adr+"、ポート"+port+"に接続中..."
sockopen 0,adr,port
if stat : dialog "socket error" : goto *bye
mes "接続しました..."
a=0
repeat
sockcheck 0
title "CHK="+stat+"/"+a
;if stat!=0 : break
if stat =0 : break;← これで正しい??
wait 10
a+
loop
a=""
sockget a,64
if stat : dialog "socket error" : goto *bye
mes "サーバーからのメッセージ : "+a
*bye
mes "終了"
sockclose
stop