トップページ > 記事閲覧
CheckKeyInputで条件分けするとsendが出来ない
名前:Null0lluN 日時: 2013/06/19 21:49

Winsock+DXライブラリを用いているのですが、 if( CheckKeyInput(InputHandle) == 1 ) { send(); } とするとif文の中に入っているのにrecv()されません 例えば if( 1 ) { send(); } でしたらちゃんと受信されるため、プログラムが間違っているわけではありません。 また、 int Flag = CheckKeyInput(InputHandle); if( Flag == 1 ) { send(); } であればちゃんと受信されます。 ://okwave.jp/qa/q8135538.html で立てたスレッドを踏まえて(続きの回答がなかったため)こちらに立てさせていただきました
メンテ

Page: 1 |

Re: CheckKeyInputで条件分けするとsendが出来ない ( No.1 )
名前:Will 日時:2013/06/20 09:33

推測で回答すると、そのif文やCheckKeyInputに問題があるのではなく、 どこか全然別のところでメモリ破壊(バッファオーバーランとか)起こしていて、 たまたま、1番目のケースの場合はその影響がsend関数の中?で発生して送信できず、 2番や3番のケースではメモリ配置が1番と変わるために送信できている、 というのはよくあるケースです。 で、原因のメモリ破壊があなたが作られている部分にあるのか、DXライブラリにあるのかは 私には判断出来ません。 #余談 DXライブラリってWinsockを使ったネットワーク機能を実装しているのですけど、 それを無視してアプリからWinsockを使っても問題なかったのでしたっけ??
メンテ
Re: CheckKeyInputで条件分けするとsendが出来ない ( No.2 )
名前:Null0lluN 日時:2013/06/20 14:26

余談のほうは管理人様の回答をお待ちするという形にして、とりあえずメモリ破壊が起きてないかをチェックしてみようと思います。
メンテ
Re: CheckKeyInputで条件分けするとsendが出来ない ( No.3 )
名前:管理人 日時:2013/06/23 21:09

> DXライブラリってWinsockを使ったネットワーク機能を実装しているのですけど、 > それを無視してアプリからWinsockを使っても問題なかったのでしたっけ?? DXライブラリは通信関係の関数を呼ばない限りWinsockの初期化も行いませんので 独自にアプリからWinsockを使用しても問題ありません
メンテ
Re: CheckKeyInputで条件分けするとsendが出来ない ( No.4 )
名前:Null0lluN(解決) 日時:2013/06/24 09:48

原因はクライアント側ではなくサーバー側にありました。 >どこか全然別のところでメモリ破壊(バッファオーバーランとか)起こしていて、 これを目安に見ていったところ、サーバー側のwhile文の中に vector<自作構造体> Buf ということをしていました。 これをwhile文の外に出して、代わりにBuf.clear()とすることで解決しました。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存