プログラミングとか日常とかの覚書っぽいなにか
[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で置き換えるとそのように出力されます。
PR
2012/01/19 ポート番号をホストバイトオーダで指定していた問題を修正しました。
さて、今日もまたWinsockです。 初回に書いたブログラムは1バイトデータの送受信を前提にしていました。 というのも、TCPというプロトコルは、ある1回のsendで送信したデータのかたまりが、相手側の1回のrecvでそのまま受信されるわけではないために、ちょっと面倒な手順を踏まなければならなかったからです。 初回のプログラムは導入ということもあって、その手の面倒な手続きを記述しなくて済むように、1バイトデータのみを扱ったのでした。 今回は、何バイトものデータを送受信する方法を試してみましょう。
2012/01/19 ポート番号をホストバイトオーダで指定していた問題を修正しました。イノビア様、ご指摘ありがとうございました。
HSPでソケットを使うにはhspsockなどの拡張プラグインがありますけど、せっかくHSP3でメッセージ割り込み処理が可能になっているというのに、ループを作ってその中で接続や受信をチェックして…などというのは無駄が多いと思うのですよ。 それよりも、WIndowsソケット(winsock)のWSAAsyncSelect関数による非同期ソケットのほうが相性が良いと思うのです。接続やら受信やらのイベント通知をウィンドウメッセージで受け取ることができますからね。 ということで、今回はHSPでの非同期ソケットに挑戦してみました。 |
プロフィール
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]
カレンダー
ブログ内検索
あ~いい漢字
|