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

プログラム解説


【目次】
クライアントからサーバへ接続する
クライアントからエコー文字列を送信する
受信した文字列をサーバからを返信する
サーバから受信した文字列を表示する
クライアントがサーバから切断する


クライアントからサーバへ接続する

 エコーの仕組みについて、プログラムレベルで解説していきましょう。
 まずは、クライアントからサーバへ接続する処理から、クライアント・サーバ双方の処理内容を見てみます。

■ client/unity/Assets/MainExecute.cs - Start メソッド
  クライアントの処理になります。
  ここで、EchoClient.ConnectSetup メソッドを用い、あらかじめ登録された
  サーバのIPアドレス、ポート番号等を使い、サーバへのコネクションを実行します。
   

■ server/echo_sample/src/MainExecute.cpp - Connect 関数
  サーバの処理になります。
  クライアントの ConnectSetup メソッドが処理している最中、
  つまりは Unity のスタートボタン押下後のログ表示のタイミング)に
  クライアントの接続要求に合わせて、この処理が動きます。

  ここではクライアントの接続リスト peerlist に接続元のRPCID(通信用のID)を
  登録し、サーバが管理するクライアントとして登録します。
   


クライアントからエコー文字列を送信する

 続けて、クライアントからエコー文字列を送信する処理を見てみましょう。

■ client/unity/Assets/MainExecute.cs - Update メソッド
  クライアントの処理になります。
  Game画面のクリック操作(またはタッチ操作)を認識したら、EchoClient.SendServer メソッドを使い、
  あらかじめ登録している文字列 m_SendString を送信します。

  このとき、引数値として Dictionary を使います。
  後述の説明になりますが、ここでは「イベントキー」と呼ばれるものと、実際に送信する「データ(文字列)」を
  パラメータとしてセットし送信します。
   


受信した文字列をサーバからを返信する

 続けて、サーバからエコー文字列を返信する処理を見てみましょう。

■ server/echo_sample/src/MainExecute.cpp - OnEvent 関数
  サーバの処理になります。

  クライアントから EchoCllient.SendServer を用いて送信を受けた場合、OnEvent メソッドが呼び出されます。
  このとき、クライアントから送信した Dictionary 情報の「イベントキー」を第二引数に、「データ(文字列)」を第三引数に持ちます。
  第一引数には Connect 関数と同じく、送信元のRPCID(通信用ID)が入ります。

  ここでは、peerlist の登録分(つまりは、Connect関数により接続を受けたクライアントすべて)に対し、
  等しく SendMessage 関数を実行します。
   

■ server/echo_sample/src/MainExecute.cpp - SendMessage 関数
  上記 OnEvent 内でコールしている処理になります。

  ここでクライアントから送信されてきたイベントキーを元に「サーバ側がどんな処理をするのか」を定義づけます。
  今回は仮に「1番であれば、送信元のクライアントにそのまま通信内容を返す」という処理を組み込んでいます。

  サーバからクライアントに送信する場合には、以下の書式で送信します。
  GetInterface_Intf( <送信先RPCID> ).Send_EchoResult( <イベントキー> , <データ(文字列)> );
   



サーバから受信した文字列を表示する

 続けて、サーバからエコー文字列を受信したときの処理を見てみましょう。

■ client/unity/Assets/MainExecute.cs - OnEvent メソッド
  クライアントの処理になります。
  サーバから GetInterface_Intf().Send_EchoResult で送信された情報は、OnEvent メソッドで受け取ります。
  引数はそのまま、第一引数が「イベントキー」、第二引数が「データ(文字列)」です。

  ここでもサーバから送信されてきたイベントキーを元に「クライアント側がどんな処理をするのか」を定義づけます。
  今回は仮に「1番であれば、クライアントのGame画面に文字列を表示させる」という処理を組み込んでいます。
   



クライアントがサーバから切断する

 最後に、クライアントがサーバから切断されたときの処理を見てみましょう。

■ server/echo_sample/src/MainExecute.cpp - Disconnect 関数
  サーバの処理になります。
  クライアントがログアウトしたとき、自動的にサーバ側の Disconnect 関数がコールされます。

  ここでは断元のRPCID(通信用のID)を持つクライアントを
  クライアントの接続リスト peerlist から削除し、サーバ内でのクライアント管理の整合性を持たせます。
   


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