Network.java



package talktool.network;

import java.net.*;

/** ネットワークの初期化と管理を行うクラス */

public class Network {

   /** NetInfoのオブジェクト */

     protected NetInfo info;

   /** Communicatorのオブジェクト */

     protected Communicator communicator;

   /** コンストラクタ */

     public Network( NetInfo info ) {

          this.info = info;
     }

   /** ネットワークの初期化を実行する */

     public void init() throws Exception {

          try {
                ServerSocket serverSocket;
                Socket socket;
                if( info.isServer() ) {
                     serverSocket
                        = new ServerSocket( info.getPortNumber() );
                     System.out.println(
                                  "クライアントの接続を待ちます" );
                     socket = serverSocket.accept();
                     String remoteName
                           = socket.getInetAddress().getHostName();
                     System.out.println(
                                   remoteName + "と接続しました" );
                }
                else {
                     System.out.println( "サーバーに接続します" );
                     socket
                        = new Socket( info.getServerName(),
                                      info.getPortNumber() );
                }
                communicator
                   = new Communicator( socket );
          }
          catch( Exception e ) {
                throw e;
          }
     }

   /** NetInfoのオブジェクトを返す */

     public NetInfo getNetInfo() {

          return info;
     }

   /** Communicatorのオブジェクトを返す */

     public Communicator getCommunicator() {

          return communicator;
     }
}