忍者ブログ
プログラミングとか日常とかの覚書っぽいなにか
[1] [2]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

前回の「HSPでWinsockプログラミング(その3)」で書いたWinsockのサンプルスクリプトではデバッグ用のログメッセージをすべてmesで表示してますが、実は最初はデバッグログ出力用のlogmesを使っていました。
しかし、なぜか一部のログが正しく出力されない現象が発生、結局mesで出力するように書き換えました。
logmes命令自体がバグを持っていそうです。
単純なループやらサブルーチンを組み合わせただけのスクリプトで試してみても現象が発生しないので、どうやらどこか深いところにバグの温床があるのかもしれないです。

追記:
どうやらlogmes実行時にメッセージ割り込み処理が走ってしまうのが原因かも。
例えば以下を実行させると、「after」がログ出力されず、他の出力の順序もおかしいです。 本来なら「before:1」「after:1」~「before:5」「after:5」の後に「on_msg:1」~「on_msg:5」となるはず。実際、すべてのlogmesをmesで置き換えるとそのように出力されます。
    #uselib "user32.dll"
#func PostMessage "PostMessageA" int,int,int,int

oncmd gosub *on_msg,10000
repeat 5
n = cnt + 1
logmes "before:" + n
PostMessage hwnd, 10000, n, 0
logmes "after:" + n
loop
stop

*on_msg
logmes "on_msg:" + wparam
return 0

拍手

PR
2012/01/19 ポート番号をホストバイトオーダで指定していた問題を修正しました。

さて、今日もまたWinsockです。

初回に書いたブログラムは1バイトデータの送受信を前提にしていました。
というのも、TCPというプロトコルは、ある1回のsendで送信したデータのかたまりが、相手側の1回のrecvでそのまま受信されるわけではないために、ちょっと面倒な手順を踏まなければならなかったからです。
初回のプログラムは導入ということもあって、その手の面倒な手続きを記述しなくて済むように、1バイトデータのみを扱ったのでした。

今回は、何バイトものデータを送受信する方法を試してみましょう。

拍手

HSP3.2のリリース予定が2009年の7月~8月らしいですね。
なんだかいろいろ機能が追加・強化されているようで、待ち遠しい限り。
どうやら後の方で定義しているユーザ定義命令を、それより前の位置で使うことができるようになるそうで、それはなかなか便利。
そのほかにもグラフィック関連の拡張が多いようです。
時間があったらβ版を試してみようと思います。

拍手

今日は再びWinsockの話。
前回は簡略化のために、エラー処理を省いたり、1文字ずつしかやり取りしなかったりと思いっきり手を抜いてきたわけですが、少しずつ実用に耐えうる形に直していけたらいいなと思っています。
時間があればですが。

今日はエラー処理の1つ、Winsock初期化時のエラー判定のお話でも。

拍手

2012/01/19 ポート番号をホストバイトオーダで指定していた問題を修正しました。イノビア様、ご指摘ありがとうございました。

HSPでソケットを使うにはhspsockなどの拡張プラグインがありますけど、せっかくHSP3でメッセージ割り込み処理が可能になっているというのに、ループを作ってその中で接続や受信をチェックして…などというのは無駄が多いと思うのですよ。
それよりも、WIndowsソケット(winsock)のWSAAsyncSelect関数による非同期ソケットのほうが相性が良いと思うのです。接続やら受信やらのイベント通知をウィンドウメッセージで受け取ることができますからね。

ということで、今回はHSPでの非同期ソケットに挑戦してみました。

拍手



忍者ブログ [PR]
プロフィール
HN:
はむぱい
職業:
ソフト作ったりしてる人
Twitter
最新CM
[06/09 replica rolex oyster perpetual datejust]
[06/09 bracelets imitation cartier love]
[06/09 replica the oyster perpetual datejust]
[06/09 datejust rolex oyster perpetual]
[06/09 replica gold love bangle]
カレンダー
06 2017/07 08
S M T W T F S
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
ブログ内検索
あ~いい漢字