CMyApplication Class でパソコン通信

CMyApplication Class で作成した HOST とクライアントとの間で通信を行います。
テンプレートを使った CMyApplication(DirectPlay) のプログラム構築の説明です。

前田稔(Maeda Minoru)の超初心者のプログラム入門

テンプレートを使ったプロジェクトの原型

テンプレートを使ったプロジェクトの原型は SimplePeer とテンプレートでパソコン通信 を参照して下さい。
テンプレートを使った場合の最大の問題点は「DialogBox の未定義と仕様の違い」にあります。
今回は SimplePeer のリソースをそのままコピーしてくるので DialogBox を作成する必要はありません。


プロジェクトの原型からの修正

  1. C:\DXSDK\Samples\C++\DirectPlay\SimplePeer から次のファイルをコピーしてきて下さい。
    SimplePeer.rc
    resource.h
  2. DxPlay.rc を削除して SimplePeer.rc のファイル名を DxPlay.rc に変更して下さい。
  3. 変更した DxPlay.rc の 29, 295 行目のソースコードを変更して下さい。
        //CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST MOVEABLE PURE "SimplePeer.manifest"
    
        IDI_MAIN                ICON    DISCARDABLE     "directx.ico"
        
  4. GUID と PORT を定義して下さい。
    GUID の値は生成するごとにプロジェクト固有の値を割り当てます。
    GUID g_guidApp = { 0x4918ed9f, 0xf6cb, 0x4437, { 0x84, 0x07, 0x08, 0xd9, 0x81, 0xf6, 0x1a, 0x1a } };
    #define SIMPLEPEER_PORT 12345
  5. ConnectViaDirectPlay() に GUID を設定するコードを追加して下さい。
        HRESULT CMyApplication::ConnectViaDirectPlay()
        {    :
             :
            m_pNetConnectWizard->SetPreferredProvider( m_strPreferredProvider );
            m_pNetConnectWizard->SetDefaultPort( SIMPLEPEER_PORT );     //+++
        
  6. "NetConnectRes.h" を削除して "resource.h" に統一します。
    リソースヘッダが二個あることはトラブルの元です。
    "NetConnectRes.h" の削除に伴い、次の修正をして下さい。
        //#include "NetConnectRes.h"
        #include "resource.h"
        
  7. プロジェクトをビルドして下さい。

プロジェクトの実行方法です

  1. ネットワークの接続にはIPアドレスが必要になります。
    事前に IPCONFIG であなたが使っているパソコンの IP アドレスを調べておいて下さい。
    複数のパソコンがネットで接続されていれば申し分ないのですが、一台だけでもテストはできます。
    Host のIPアドレスが不明のときは、ネット上の HOST が検索されます。
  2. DxPlay.exe を起動して HOST を立ち上げます。
    起動するプログラムにより、メニューの個数が画像とは異なります。
    そのまま(DirectPlay8 TCP/IP Service Proviser)の状態で [OK] ボタンをクリックします。
  3. Create ボタンをクリックして新規セションを開設します。
  4. Create Game 画面が表示されます。
    LocalPort は 2508 が標準ですが 12345 でもかまいません。
    そのまま[OK]ボタンをクリックします。
  5. しばらくすると HOST が起動されて待機状態に入ります。
    HOST はクライアントから接続要求があるまで待機します。
  6. クライアントを起動してホストに接続します。
    もう一度 DxPlay.exe をダブルクリックで起動します。
    そのまま(DirectPlay8 TCP/IP Service Proviser)の状態で [OK] ボタンをクリックします。
  7. Start Search ボタンをクリックすると Remoto Address の DialogBox が表示されます。
  8. Hostname(IP アドレス) とホストで設定した Port 番号を指定して OK をクリックして下さい。
    Hostname(IP アドレス) を空白にすると、ネット上の HOST が検索されます。
  9. HOST が検索されて、みつかれば [Join] が有効になります。
  10. Join ボタンをクリックしてセションに参加します。
    Wave to other players! ボタンをクリックすると相手方のウインドウにメッセージが送信されます。
  11. 「1:1」に限らず、複数のクライアントを立ち上げて通信することもできます。
  12. Exit ボタンをクリックしてウインドウを閉じて下さい。

前田稔(Maeda Minoru)の超初心者のプログラム入門

超初心者のプログラム入門(DirectX9 game program)

超初心者のプログラム入門(DirectX10 game program)