if文の中ではwinsockのsendが出来ない?こんにちはゲストさん。Send();}というクラスがあったとします。Init()ではソケットの生成だとかWinsockを使った通信で必要な設定を行っています。);----}}このような関数の場合に、if文の外のsend()をコメントアウトしたりコメントにしたりして動作を確認してみたところif文の外のsend()にはサーバーが反応するのですが、if文内のsend()はsend()が行われているのが確認されるのにもかかわらずサーバー側が一切反応しません。ここでいう、サーバーが反応するとは、select()を用いてブロッキングが解除されてrecv()に処理が回れば反応した、recv()に処理が行かなければ反応していない、としています。回答(7)ANo.7fresh_homepieあとはもう、現象が発生する最低限のソースを、とぐらいしか。最低限のソースを作ってみました。DXライブラリを用いているのですがどこかにアップロードしたのを落としてもらうようにする形でいいのでしょうか?その場合、DXライブラリの関数を使用しているためどのような処理を行っているかをコメントに書くためにまた少しお時間をいただきたいです。最低限のソースと同じような形でコンソールプログラムに書き換えたところ、思ったように動きました。Studioだと、変更部分のみビルドとかエディットコンティニューとか使ってたりすると、デバッグ実行で実行位置がおかしくなったり、動作がおかしくなったりということが稀に起こるかと。リビルドすれば直りますが。ソースが問題ないのにうまくいかなかった経験としては、セキュリティソフトのファイアウォールに引っかかってたということがありました。その時はその機能を一時的にOFFにしたらうまくいきました。今までのところ、接続できないということはあっても、sendが途中からうまくいかないいうことはなかったとは思いますが。21:55:23補足VC++2010にも問題ないようですし、ファイアーウォールにも問題ありません。条件が間違っているとしか思えないのですが。(0)通報するANo.4wormhole>手動である分どんなに早くても1秒程度はかかりますし、少なくとも1:1で反応するのではないでしょうか?なぜ「~数秒程度かかるのだから送信されているはず」という仮定をされてるのでしょうか?バッファリングされていて実際には送信されていない(その次のsendと一緒に送られる)という事もありえるんですが。19:39:45補足そんなことがあるんですね。外のHELLOは何回も受信されますが中のHelloは受信されませんので、バッファリング?はなさそうです。(0)通報するANo.3wormhole>ここでいう、サーバーが反応するとは、select()を用いてブロッキングが解除されてrecv()に処理が回れば反応した、recv()に処理が行かなければ反応していない、としています。TCPはsendの回数とrecvの回数が一致するとは限らないので、それで判断してもダメです。(0)通報するANo.2fresh_homepie単に2回sendされたデータを1回のrecvでまとめて受け取ってるだけではないでしょうか。少なくともVC++2010上で確認する限りはバイト数も受信内容も1個分しか受信していません。(0)通報するANo.1Wr5>if文の外のsend()にはサーバーが反応するのですが、if文内のsend()はsend()が行われているのが確認されるのにもかかわらずサーバー側が一切反応しません。Wiresharkなどで「間違い無く送信されている」というコトを確認していますか?条件とか不明ですから掲示されている内容だけでは、「実は実行されていない」という可能性も否定できません。send()に失敗しているかも知れませんし。ついでに......滅多にないとは思いますが、send()してもすぐに送信されない。いうこともあるかも知れません。送信バッファに入ればsend()は戻って来ますしね。13:38:28補足>Wiresharkなどで「間違い無く送信されている」というコトを確認していますか?いえ、VC++2010のデバックモードで処理が通っているか(返り値はいくつかも含め)で判断していました。printf()などをif文に記述してみるという確認方法を取っても確実にif分の中に入っています。そのため、if文外だと6回中6回成功し、if文内だと6回中6回失敗する原因が全く思いつかないのです。14:18:43お礼127.0.0.1を使っているのでWireSharkでは無理でしたやる方法はあるようですが、それに沿ってやってみたものの、出来ません。WinSockでの通信プログラムがうまくいきません。使用言語はC++とDirectXです。(acceptしたらスレッド作成し、作成が終ったということをクライア...C言語エラーの解決法教えてください。このプログラムを実行出来るコンパイラ?あるいは開発環境を紹介して頂けませんか?出来れば無償版がいいです。Reserved.掲載情報の著作権は提供元企業等に帰属します。