(Netty を使用して) ダミー サービスを作成したい既存のサービスがあります。これは、テスト目的で使用されます。
サービスの既存のクライアント コード フラグメントは次のようになります。
Socket socket = new java.net.Socket();
socket.connect(new InetSocketAddress("localhost", 8080), 10000);
socket.setSoTimeout(20000); // set a timeout of 20 seconds
InputStreamReader ir = new InputStreamReader(socket.getInputStream());
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
// write some string to the server and wait for answer
out.println("SomeCommand");
// server has written some answer, read it
char[] c = new char[2];
ir.read(c, 0, 2);
String cs = new String(c);
if ("OK".equals(cs.toString())) {
// write some more string's to the server
}
// we're done, close the connection
out.println("BYE");
out.close();
socket.close();
Nettyは、java.net.Socket 接続用のサーバーを作成するための適切なフレームワークですか? (そうでない場合、どのフレームワークを使用する必要がありますか?)
QuoteOfTheMoment の例を使用して、Netty から始める方法を見つけようとしています。QuoteOfTheMomentServerHandler は基本的に私が望むことを行います。着信メッセージに対して、上記のスニペットが入力ストリームを使用して回答を読み取ることができるように、何らかの回答を返しますが、上記のソケットは QuoteOfTheMomentServer に接続できません。エラーは「接続が拒否されました」です。
[編集] より明確にする:
問題 (私が思う) は、接続していないか、使用しているポートです。より良い質問をしてみましょう:
私はnettyを始めたばかりで(nioの経験はありません)、さまざまなタイプのチャネル、パイプラインなどに精通していません。
サーバーは、サーブレットの要求/応答のように (http ではない、または http サーブレット impl を再構築しようとしているなど)、コード フラグメントのように出力ストリームに書き込まれた inputString に反応し、いくつかの文字列/バイトを入力に書き戻す必要があります。 -stream コード フラグメントのように、クライアントは次に移動します。そのため、接続は開いたままで同期する必要があり、クライアントはサーバーからの応答を待ちます。Javaチュートリアルの「ソケットのサーバー側の書き込み」の例を使用すると、クライアントで動作させることができます。でもnettyからスレッドハンドリングなどを活用したい。
QuoteOfTheMomentServerHandler は、私が望むサーバー側の実装のようですが、そのセットアップは指定されたクライアント コードを処理できますか?
問題は、クライアントの動作方法を考慮して、どの種類のパイプライン、チャネル、またはそのようなものを使用する必要があるかということです。
ここでも、クライアントとサーバーが存在します。既存のクライアントと連携するダミーのサーバー実装を構築したいと考えています。