学習目的で、私はJava TCPサーバーを作成しています。これはSyteTCPServer
という独自のクラスにラップされており、接続ロジックを処理するためにServerSocket
を使用しています。これは良いコードプラクティスが非常に重要な学校プロジェクトのためのものです。Java TCPサーバークラスの抽象度
特定のアプリケーションレベルのプロトコルがあるため、独自のクラスに入れられている理由があります。クラスはより大きなプロジェクトの一部です。
グーグルでは、ServerSocket
とそれに付随するロジックをすべてメインメソッド内に直接配置している人しか見つかりませんでした。私はそれがOOPになると行く方法はわからないのですか?
マイSyteTCPServer
。しかしながら、単純なStart()
とStop()
方法は、それが顧客を扱う、ServerSocket
を使用しての実装、などを隠し
を持って、私はので、ネットワーク機能の多くを困惑少しです、 IntelliJはIOExceptionsを捕まえるよう警告しています。クライアントを受け入れることによってIOExceptionがスローされる可能性があるので、前記クライアントの出力ストリームを得ることができるので、writeBytes
ができます。
抽象化のコンテキストでは、これらの例外をどのようにして解決するのが最適でしょうか?この方法の隣にthrows IOException
と書いて、上のコードtry...catch
をSyteTCPServer.Start
にしますか?
また、サーバー停止全体で例外が発生した場合、またはクライアントの1つが正しく接続されなかったという事実を「非表示にする」必要がありますか?あるいは、クライアントが接続に失敗したときにイベントを発生させるべきでしょうか?私は本当に知りません..
UI /コアコードの分離のためにペストのような例外が発生した場合、出力を書き込むことも避けてください。
私はこれらが1つにあまりにも多くの質問ではないことを願っています。
はここで、私が持っているstartメソッドの例ですIOExceptionがスローされます。
public void Start() throws IOException {
this.listenSocket = new ServerSocket(this.port);
Listen();
}