none
VC2010 Win32アプリで(TCP)socketの操作がわかりません RRS feed

  • 質問

  • お世話になります

    Win7でrshの機能が使えないため TCPポートからサーバに対しコマンド(文字列)を送信し VBアプリからもVCのアプリからもrsh代わる機能を備えたいと思い コンソール用のアプリ作成を試みています。

    初めにMFCで作成し(Windows ソケット)にチェックをいれ 出来上がったクライアントアプリからは サーバに対し 任意なポートで通信が可能となりました。 しかし コンソールアプリで同上の機能の装備がわかりません(ネットで調べましたが・・・)

    ////////////////////////////////

    MFC では上手く行ったソケットの初期化したコードです

    CSocket         sock;

    sock.Create()

    //////////////////////////////////////

    コンソールアプリで "winsock2.h" など手当たり次第それらしいヘッダーを組み込みましたが 定義されていないエラーが生じます。 Windowsアプリを基礎を知らずに作成してるのは承知しているのですが

    よろしくお願いいたします。

    開発環境 vs2010 Xp(32bit)

    2013年2月1日 2:09

回答

  • コンソールアプリを作りたいということですが、C++で作る必要はあるのですか?ソケット通信は、C++ではなく、.NET Framework にもあります。

    Windows 7 であれば、.NET Framework 3.5.1(3.5SP1相当)が最初からインストールされていますので、XPのように別途ランタイムを配布するなどは不要です。逆に C++ の場合、ランタイムがインストールされていないので別途配布する必要があります(スタティックリンクすればEXE単体で配布可能ですが)。

    さて、エラー部分ですが、CSocket は、MFC アプリ以外では使えません。

    コンソールの場合は、Winsock の socket 関数などを使って実装します。MSDN ライブラリの socket 関数のリファレンス(英語です)に、サンプルコードが載っていますので参考になると思います。

    もし、コンソールであれば、.NET Framework を利用してもよいのであれば、System.Net.Sockets.Socket クラスを利用すれば同じようなことができます。

    こちらは、MFCとは異なりコンソールでも利用できるようになっています。


    わんくま同盟,Microsoft MVP for Visual C++(Oct 2005-) http://blogs.wankuma.com/tocchann/

    • 回答の候補に設定 佐伯玲 2013年2月4日 0:20
    • 回答としてマーク 佐伯玲 2013年2月7日 2:48
    2013年2月1日 3:12
  • Porting Socket Applications to Winsockには通常のBSD UNIX socketのプログラムをWindowsに移植する方法が記載されています。socket、bind、listen、connectなどなど関数名や基本的な動作は同じです。Windowsアプリの基礎は特に必要ありません。

    • 回答の候補に設定 佐伯玲 2013年2月4日 0:21
    • 回答としてマーク 佐伯玲 2013年2月7日 2:48
    2013年2月1日 4:32

すべての返信

  • コンソールアプリを作りたいということですが、C++で作る必要はあるのですか?ソケット通信は、C++ではなく、.NET Framework にもあります。

    Windows 7 であれば、.NET Framework 3.5.1(3.5SP1相当)が最初からインストールされていますので、XPのように別途ランタイムを配布するなどは不要です。逆に C++ の場合、ランタイムがインストールされていないので別途配布する必要があります(スタティックリンクすればEXE単体で配布可能ですが)。

    さて、エラー部分ですが、CSocket は、MFC アプリ以外では使えません。

    コンソールの場合は、Winsock の socket 関数などを使って実装します。MSDN ライブラリの socket 関数のリファレンス(英語です)に、サンプルコードが載っていますので参考になると思います。

    もし、コンソールであれば、.NET Framework を利用してもよいのであれば、System.Net.Sockets.Socket クラスを利用すれば同じようなことができます。

    こちらは、MFCとは異なりコンソールでも利用できるようになっています。


    わんくま同盟,Microsoft MVP for Visual C++(Oct 2005-) http://blogs.wankuma.com/tocchann/

    • 回答の候補に設定 佐伯玲 2013年2月4日 0:20
    • 回答としてマーク 佐伯玲 2013年2月7日 2:48
    2013年2月1日 3:12
  • Porting Socket Applications to Winsockには通常のBSD UNIX socketのプログラムをWindowsに移植する方法が記載されています。socket、bind、listen、connectなどなど関数名や基本的な動作は同じです。Windowsアプリの基礎は特に必要ありません。

    • 回答の候補に設定 佐伯玲 2013年2月4日 0:21
    • 回答としてマーク 佐伯玲 2013年2月7日 2:48
    2013年2月1日 4:32
  • こんにちは、a61775 さん
    フォーラムオペレータの佐伯 玲 です。

    寄せられた情報はご確認いただけましたでしょうか?
    参考になる情報だと思われましたので私のほうで「回答としてマーク」とさせて頂きました。

    寄せられた情報に関連した質問等ございましたら引き続きこちらのスレッドをご活用下さいませ。

    宜しくお願いいたします。
    __________________________
    日本マイクロソフト株式会社 フォーラム オペレータ 佐伯 玲

    2013年2月7日 2:48