HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0112
.HrkHSP付属サンプル「CLIENT2.hsp」について1未解決


.Hrk

リンク

2009/1/12(Mon) 02:08:30|NO.22721

HSP本体付属のサンプルスクリプトを見てて気になったところがあります

「CLIENT2.hsp」でサーバーに接続後、データの到着の処理の部分ですが、


repeat sockcheck 0 title "CHK="+stat+"/"+a if stat!=0 : break // 0でなければ抜ける wait 10 a+ loop

となっていて、sockcheck命令のリファレンスを調べてみると、

0 : 受信データが到着している
1 : 受信データは到着していない(タイムアウト)
2 : 通信中にエラーが発生した

となっています。データが到着したときに抜けるべきなので、条件分岐の部分は


if stat!=1 : break // 0でなければ抜ける

と書くべきじゃないでしょうか(本当はstat=2のエラー処理をしないといけない
ですが...)。

サンプルスクリプトは正常に動いてるようにみえますが、調べてみるとstat=1
(タイムアウト)でbreakしています。そしてそのままsockgetの行にきてデータ
の受信をはじめています。



この記事に返信する


シモン

リンク

2009/1/12(Mon) 14:07:39|NO.22734

私も先日そこでひっかかったんです。

hspsock.dllのsockcheckでは
タイムアウト処理にselect関数を使っていると思われますが、
select関数の戻り値がそのまま戻ってきているようです。

「Internet Programming API仕様」は下のサイトで、
ttp://www.nakka.com/lib/inet/func.html

ちょっと前にHSP3ラウンジ掲示板で私がした質問。
(このときは私も理解力が無かった…)
ttp://fs-cgi-basic01.freespace.jp/~hsp/ver3/hsp3.cgi?print+200807/08120031.txt


二週間程前にsocketの勉強のためにhspsock32というモジュールを作ってみましたので、
sockcheckのコードをごらん頂くと参考になるかもしれません。

ttp://scripttpircs.seesaa.net/article/111887260.html



ONION software Copyright 1997-2023(c) All rights reserved.