DxLibで通信時のバグ

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
kaiten

DxLibで通信時のバグ

#1

投稿記事 by kaiten » 16年前

どうもすいません、kaitenです。
自力で何とかしようと一週間ほど悩んだのですが手も足も出ないので質問させていただきます。
現在、VC++2008EE、vista、DxLibで通信プログラムを組んでおり、受信時に領域外エラーが発生してしまいます。
ソースはすべて添付するのでそちらを見てください。
Sessionが親、Session2が子です。Session2を相手が開いていないとSessionはmissと表示して終了します。
チャットを作るためなので文字列の送受信を行っています。半角50文字まで送受信できるようにしようとしたのですが、半角18文字以上だと受信側がおちてしまいます。
VCのデバッガで追ってみようかと思ったのですがソースが表示できないとなり、逆アセンブルしようとしたので諦めました。
情報が不足でしたら言っていただければ出せる限り書きます。どうかよろしくお願いします。

Justy

Re:DxLibで通信時のバグ

#2

投稿記事 by Justy » 16年前


>半角18文字以上だと受信側がおちてしまいます

  S_network::Draw() [color=sans-serif]buf2.insert(now+width, "\n")[/font] が怪しそうですね。
 
 buf2には送られてきた最大 50文字の文字列が入っているはずですが、それに対して
挿入しようとしている位置が now+width …… widthは320なので
文字列の 320以降の位置に挿入しようとしています。

 当然そんな位置に文字列はないので、これはまずいでしょう。

 18文字という境界は while(num*size>width) が実行されるかどうかの
境目だったのではないでしょうか。

kaiten

Re:DxLibで通信時のバグ

#3

投稿記事 by kaiten » 16年前

Justyさん、ありがとうございます。
ご指摘の通りで、丸々消したところ解決しました。
DrawFormatStringがそもそも\nに非対応であることをすっかり忘れていました。よくよく考えたら意味ない処理……

これで解決とします。結果的とはいえ不適切な題名をつけてしまい申し訳ございません。

閉鎖

“C言語何でも質問掲示板” へ戻る