▲前のページへ
次のページへ▼

シンプルなエコーサーバを作ってみよう


【目次】
概要
フォルダ構成
サーバを立てる
クライアントの準備
サンプルを実行してみる


概要

  本サンプルは MonobitEngine による最もシンプルなプログラムで、
  エコー処理(サーバに送信したものをそのまま受信して表示する)を行います。

  MonobitEngine の基本原理の1つである、
  『サーバとクライアントによる同時平行駆動型の処理エンジン』の基礎を学べます。

  このサンプルプロジェクトを触っていただくことで、

   「MonobitEngine はどんな仕組みで動いているの?」
   「サーバとクライアントとの間で、どうやって情報のやり取りをするの?」
   「どういう手順でプログラム(スクリプト)を構築していけばいいの?」

  といった、おそらく開発者の皆さんが最初に思う疑問への答えが見えてくるはずです。
  


フォルダ構成

 フォルダ構成は以下のようになります。
echo_sample_lite
  ├ client
  │ └ cocos2d-x-3.0 … echo_sample クライアントプロジェクト
  ├ server … echo_sample サーバプロジェクト
  └ tools … RPCスタブ環境一式

■ client/cocos2d-x-3.0
  cocos2d-x 3.0 向けに作られた、クライアントプロジェクトが入っています。
  開発者の方にカスタマイズしていただける部分は以下のファイルになります。

    ・cocos2d-x-3.0/echo_sample/Classes/MainExecute.h
    ・cocos2d-x-3.0/echo_sample/Classes/MainExecute.cpp

  なお、上記ファイル以外はライブラリとして用意しているものですので、
  不用意に触らないようにしてください。

■ server
  Linux向けに作られた、各種サーバプロジェクトが入っています。
  開発者の方にカスタマイズしていただける部分は以下のファイルになります。

    ・server/echo_sample/src/MainExecute.cpp

  なお、上記ファイル以外はライブラリとして用意しているものですので、
  不用意に触らないようにしてください。

■ tools
  RPCのコードに展開する元のRubyコードが入っています。
  RPCにつきましては、後述のRPC編にて触れていきます。


サーバを立てる

■ サーバを立てる前に
  サーバを起動する前に、サーバプログラム側のシェルスクリプトを
  それぞれのサーバ環境に合わせて変更する必要があります。

  先に、Linuxサーバの root 権限から ifconfig コマンドを実行し、
  イーサネットのIPアドレスを調べてください。
# ifconfig
  その後、サーバの実行シェルスクリプトを開き、以下の太字の部分を
  該当するサーバのIPアドレスに合わせて書き換えてください。

    ◎ server/echo_sample/echo_sample.sh の中身
./echo_sample -f 7000 -F 127.0.0.1 -c 6200 -C 127.0.0.1 -n 0x4000000 -N 0x4ffffff

■ server のビルド
  server 内のデータを任意のディレクトリに配置後、以下のコマンドを実行して
  ビルド用シェルの実行権限を割り当ててください。
$ bash ./setup.sh
  続けて、Linux上の適切なディレクトリ上に配置し、server のディレクトリから
  以下のコマンドを実行してください。
$ ./server.sh debug

■ server の起動
  最後に以下のコマンドを実行して、server を起動させましょう
$ ./server.sh start
  すると以下の表示がなされ、server が起動します。
Starting Server:
sync start
relay start
echo_sample start


クライアントの準備

■ cocos2d-x ライブラリのデプロイ
  現在提供している echo_sample プロジェクトは、ライブラリ(libcocos2dx)を除外しています。
  そのため、まずは cocos2d-x ライブラリをプロジェクト内の所定位置にデプロイします。

  エクスプローラで /client/cocos2d-x-3.0/echo_sample/ を開き、その中に cocos2d-x-3.0 の SDK として提供されている
  ライブラリ群を cocos2d フォルダに入れてください。
  

  /client/cocos2d-x-3.0/echo_sample/cocos2d/ フォルダの中身が以下のようになれば問題ありません。
  

■ サーバ接続先IPアドレスの変更
  先にサーバ側で ifconfig コマンドを使って調べた IPアドレスについて、今度はクライアント側からの接続先として
  IPアドレスを設定します。
  パッケージエクスプローラ上の echo_sample > Classes > MainExecute.cpp を開き、6行目にて定義している
  MainExecute::m_TargetAddr の初期値を、ifconfig で調べたサーバ側のIPアドレスに書き換えてください。
  

<Android版>
■ eclipse にプロジェクトを登録
  デプロイが完了したら、eclipse にプロジェクトを登録します。
  eclipse のメニューから ファイル > 新規 > プロジェクト を選択し、以下の画面で、Android > 既存コードからの Android プロジェクトを
  選択し、[ 次へ ] ボタンをクリックします。
  

  先ほどデプロイした client/cocos2d-x-3.0/echo_sample/cocos2d/ 内にある cocos/2d/platform/android/java (libcocos2dx) を
  インポートするように選択し、[ 完了 ] ボタンをクリックしてください。
  

  同様の手順で、client/cocos2d-x-3.0/echo_sample/proj.android/ (echo_sample)をインポートするように選択し、
  [ 完了 ] ボタンをクリックしてください。
  

  パッケージエクスプローラ上の表示が以下のようになっていれば問題ありません。
  

■ クライアントのビルド
  クライアントをビルドするには、build_native.py を実行する必要があります。
  /client/cocos2d-x-3.0/echo_sample/proj.android 内に含まれている build_native.py を
  コマンドプロンプトから実行してビルドしてください。
   

  実行後、以下のような表示がなされればビルド完了です。
   

<iOS版>
■ MLNClient.framework.zip を解凍
  /client/cocos2d-x-3.0/echo_sample/lib/ios/MLNClient.framework.zip を解凍することで、
  MLNClient.framework フォルダが作成されます。

■ クライアントのビルド
  XCode で /client/cocos2d-x-3.0/echo_sample/proj.ios_mac/echo_sample.xcodeproj を開き、
  Product -> Build を実行し、「Build Succeeded」となれば、ビルド完了です。
   


サンプルを実行してみる

<Android版>
■ eclipse 上で実行してみる
  eclipse の実行再生ボタンを押下し、(Androidアプリケーションを選択して)起動します。
  正常に起動すると、Androidの画面に以下の表示がなされます。
     ※ エミュレータを起動すると縦向きがデフォルトになりますので、CtrlキーとF11キーを同時押しして
       縦向きから横向きに切り替えてください。
   

■ 画面をクリックすると、エコー送受信が実行される。
  この状態でAndroidの画面をクリックすると、エコー送受信が実行され、以下のように表示が切り替わります。
   

■ サーバを停止し、エコー送受信が動かないことを確認する。
  ここでサーバを停止してみましょう。
  Linuxサーバに戻り、以下のコマンドを実行してください。
$ ./server.sh stop
  これでサーバが停止します。

  サーバが停止した状態で画面をクリックしても、送信に失敗する旨が表示されるだけになります。
   

<iOS版>
■ XCode 上で実行してみる
  XCode の実行再生ボタンを押下し、iOSシミュレーターを起動します。


▲前のページへ
次のページへ▼