Microsoft Visual C++ 2008 Express Editionでselect関数とFD_ISSET関数を使用できるか

このQ&Aのポイント
  • Microsoft Visual C++ 2008 Express Editionでソケット通信のサーバ、クライアントプログラムを作成したい場合、select関数とFD_ISSET関数を使用することで複数クライアントのデータ受け取りが可能です。
  • select関数の引数にデータを設定し、FD_ISSET関数の戻り値で読み取り可能なデータがあるかを検知し、recv関数で受け取ることができます。
  • この方法はマルチスレッドのやり方であり、Microsoft Visual C++ 2008 Express EditionではMFCがなくても使用できます。
回答を見る
  • ベストアンサー

”select”,”FD_ISSET”という関数はMicrosoft Visual C++ 2008 Express Editionで使えますか?

今、Microsoft Visual C++ 2008 Express Editionでソケット通信のサーバ、クライアントプログラムを作りたくていろいろ調べていて、特に複数クライアントが接続できるサーバを作りたいと思っています。 ただ、どうしてもrecv関数に入ると、1台の端末からのデータ受け取りでステップが停止してしまって、通信を占有してしまい、他のクライアントからのデータを受け付けることができないので、どうすればよいのかと思い、 ググッていたら http://x68000.q-e-d.net/~68user/net/c-echo-2.html このページにselect関数とFD_ISSET関数というのがあって、select関数の引数にデータを設定すれば、FD_ISSET関数の戻り値で作成したソケットに読み取り可能なデータがあるのかを検知できて、検知したらrecv関数でとれるので、これでrecv関数での立ち止まりがないので、複数のクライアントからのデータを行えるというプログラムを見つけました。 ただ、このFD_ISSET関数、select関数はまさにマルチスレッドのやり方だと思うので、Microsoft Visual C++ 2008 Express EditionではMFCがないとのことなのですが、使用することはできるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4846/10257)
回答No.1

それはUnixのAPIです。 素直に、WindowsAPIでどうするか調べる方が近道だと思います。私は知りませんが、nonblock-readとかするのかな? あるいは、Windowsにcygwinのgccコンパイラを入れるとUnix互換APIが使えるので、select等も使えます。

techhouse
質問者

お礼

回答頂きありがとうございました。 やっぱり、UNIXのものなんですね(--; 残念。 http://www.ops.dti.ne.jp/~allergy/socket/socket.html このページの方も同様の件で、それに対する解決法を提示されておりました。”データを受信する関数であるrecvがブロッキングするからだ。”っていうことが書かれていて、”nonblock-read”とかっていうんですね。

関連するQ&A

  • Microsoft Visual C++ 2008 Express EditionでMFCアプリケーション ウィザードはどこですか?

    今、Microsoft Visual C++ 2008 Express Editionでソケットプログラムに関して勉強中で、 http://www.g-ishihara.com/mfc_nw_01.htm このサイトにあるサンプルプログラムをやりたいと思っているのですが、このページの冒頭に出てくる”MFCアプリケーションウィザード”というのはMicrosoft Visual C++ 2008 Express Editionではどこでできるのでしょうか?

  • Microsoft Visual C++ 2008 Express Editionのアンインストール

    Microsoft Visual C++ 2008 Express Edition SP1をアンインストール したいのですが、インストールしたときにいろいろよくわからないものが インストールされました。 なので、削除するときに何をアンインストールしたらよいのかわかりません。 教えてください。 わかっているものは ・Microsoft .NET Framework 3.5 Language Pack SP1 - 日本語 ・Microsoft .NET Framework 3.5 SP1 ・Microsoft Visual C++ 2008 Express Edition SP1 - 日本語 ぐらいです。

  • Visual C++ 2008 Express Edition が使えなくなった。

    Visual C++ 2008 Express Editionを開いたら、「Visual C++ 2008 Express Edition 製品の登録」と出てきて使うことが出来ません。 「今すぐ登録」をクリックして、Windows Live ID は取得したのですが、登録キーの取得が出来ません。Windows Live IDでMicrosoftサイトにサインインしても、画面中程の読み込みが終わらなくて、何もできませんでした。どうしたらVisual C++ 2008 Express Editionが使えるようになるでしょうか?

  • Visual C++ 2008 Express EditionでCのコンパイルは可能ですか?

    Visual C++ 2008 Express Editionを使いプログラムをC++で書いていたのですが、 Cで書かなくては駄目な状況になりVisual C++ 2008 Express Edition でもCのコンパイルが出来るのかを教えて貰いたいです。 試してみたところ出来そうになくて困っています。 Visual C++ 2008 Express Editionの導入方法は以下のURLの通りにしました。 http://www.microsoft.com/japan/msdn/vstudio/express/beginners/2008/visualc.aspx なにか追加で入れる事で使える様になるのか、もしくは出来ないのかよろしくお願いします。

  • Microsoft Visual C++ 2005 Express Edition

    いつもお世話になっています。 Microsoft Visual C++ 2005 Express Editionのコンソールアプリケーションで文字色の変更や、文字を表示する位置を指定する方法をご教授いただけますでしょうか? C言語での操作はできますが、C++でのやり方がわかりません。 OSは Windows XP です。 宜しくお願いします。

  • Microsoft Visual C++ 2008 Express Editionのコマンドプロンプトのついて

    Microsoft Visual C++ 2008 Express Editionのコマンドプロンプトからnotepad++を起動できるようにしたいのですがどうすればできますか?

  • Visual Studio Express Editionについて

    プログラムの勉強を初めようと思っております。もちろん初心者です。 簡単なアプリケーションを作れるようになりたいです。 無償のソフトを探していたら、Microsoft Visual C++ 2005 Express Edition を見つけこれでいいかと思い、更に調べてみると同様のソフトで、 Microsoft Visual BASIC 2005 Express Edition、 Microsoft Visual C# 2005 Express Edition、 もある事が分かりました。BASIC、C言語は10年くらい前にかじり程度 勉強しましたが、完全に忘れました。 一から勉強し直すとして、どの言語がお勧めでしょうか? それぞれの良い所、悪い所も教えて頂けるとありがたいです。 ご存知の方いらっしゃいましたら、ご教授お願いします。

  • Visual C++ Express Edition でもprintf

    Visual C++ Express Edition でもprintfを使いたい 私は、Visual C++ 2008 Express Editionを使っています。  以前はVisual Studio 2005 Professionalを使っていました。 今まではプログラムを走らせている間の変数の変化を見るために、 printf関数を使って「出力」ウィンドウに数値を表示させていました。 Visual C++ 2008 Express Editionに変更してから、 同一のソースコードをコンパイル、実行しても printf文で記述した出力内容を「出力」ウィンドウに表示させることができません。 これは、Express Edition特有のものでしょうか? printfを使って変数を表示できる方法があれば教えてください。 よろしくお願いします。

  • Visual C++ 2008 Express EditionとVisual c++.net standard version 2003

    私は大学生なのですが、最近大学のPCでMicrosoft Visual C++ 2008 Express Editionを使って自分なりに真面目にプログラムに取り組むようになりました。 そんな中、家の中の引き出しを整理していると、数年前に興味本位で購入したVisual c++.net standard version 2003が見つかりました。当時はちょっといじっただけでほとんど放置状態でした。 そこで詳しい方にお伺いしたいのですが、『Microsoft Visual C++ 2008 Express Edition』と『Visual c++.net standard version 2003』、これからはどちらを使ってプログラムを組んでいく方が良いと思われますか?幾つかサイトで調べてみましたが、イマイチ違いが分かりませんでした。 恐らくプログラムの目的によって変わってくるとは思いますが、その辺りも含めて御教え頂けたら…(こういうことするならこっち、特に何も制限がないならこちらを勧める、など) ちなみに今の所、Microsoft Visual C++ 2008 Express Editionで不便に思ったことはありません。

  • Microsoft Visual C++2010 

    Microsoft Visual C++2010 Expressをダウンロードしようと思ったのですが、Visual Studioのサイトが2012と、新しくなっていたのでダウンロードできませんでした。(正確にはMicrosoft Visual C++2010 ExpressがVisual Studioのサイトにありませんでした。)もちろん、「Microsoft Visual C++2010 Express」で検索してみましたが、ダウンロードできるサイトがありませんでした。 まだMicrosoft Visual C++2010 Expressはダウンロードできるのでしょうか?あるとすれば教えてください。(できればURLを添付してください。)お願いします。

専門家に質問してみよう