ロボカップ・シミュレーション部門のサッカーゲームは,
このlessonでのポイント:
サッカープレーヤのオブジェクトクラスの名前はClientとします.
このプログラムは,サッカーサーバにinitコマンドを送ります.
つぎに,initコマンドに対するサッカーサーバからのreplyを解析し、sideとplayernumberをとりだします.
(注)
サーバの6000番ポートは、init コマンドの受付をするためだけに 存在しています.
サーバは init コマンドが送られてくると、プレイヤー ごとに新しくポートを作成し,
メッセージを送り返します.以降,プレイヤーは,init が成功したことを示すメッセージの入っていたパケット
のポート番号を使用します.
ソースファイルClient.javaのコンパイル:
javac Client.java
プログラムの実行:
java Client &
java Client -h hostname &
java Client -h 157.***.##.+++ &
Clientプログラムの説明:
行30-41:
引数の処理行60-73:
サッカーサーバにポート番号6000を用いて,initコマンドを送ります.Javaでは,java.netパッケージのDatagramPacketクラスおよびDatagramSocketクラスのAPIを用いUDP通信します.行81-96
initコマンドの応答としてサッカーサーバからサイド情報とプレィヤ番号を含んだメッセージが戻ってきます.
ここで注意することは,受信メッセージに対するポート番号は,6000でないことです.
プログラムの実行:
実行して,サッカーサーバに接続して下さい.次に,複数のプレィヤを接続し,サッカーモニタで対応するプレィヤ番号の色が変化すること,異なるポート番号が戻ることを確認してください. 実行リスト
プログラムリスト:
プログラム参考:
ネットワーク(http://java.sun.com/Series/Tutorial/networking/overview/index.html)