- ベストアンサー
TCP/IPソケットプログラミングJava編について
TCP/IPソケットプログラミングJava編という本を使って通信ネットワークの勉強をしています。 この本は一通り読んでプログラムの動作確認を行ったのですが、第4章の圧縮サーバのプログラムの動作確認が取れません。 圧縮サーバのプログラムは、本に乗っていなくて自作する必要があります。 どなたかこのプログラムを作成した方いらっしゃいませんか? いらしたらソースコードを教えていただきたいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
これかな? よくは知らないけど。
お礼
回答ありがとうございます。 探していただいたサイトには、圧縮サーバのコードが載っていませんでした。CompressProtocolFactory.javaを使って圧縮サーバを自作しなければいけないようです。(ちなみにサイトにはCompressProtocolFactory.javaを使わない圧縮サーバのコードは乗っていますが、CompressProtocolFactory.javaを使って起動させたいのです。) 圧縮サーバは、サイトにあるCompressClient.javaと通信して、圧縮ファイルを作成します。 CompressProtocolFactory.javaを使ったプログラムを自作しました。 クライアント側が未圧縮バイトを送信し、サーバはそれを圧縮します。 そのあとサーバが圧縮したバイトをクライアントに送信します。 ここまではうまくいくのですが、その後(クライアントが送信されたバイトを読み込み、ファイルに書き込む)ところから、うまく起動しません。起動しないというよりは、読み込みの前で動作が止まっているような感じです。 私の書いたソースがおかしいのだと思うのですが、自分ではどこがおかしいのか分かりません。 おかしい部分が分かれば教えていただけないでしょうか? 下は自作したソースコードです。 package socket_129; import java.net.*; // Socketに必要 import java.io.*; // IOException,[File]Input/OutputStreamに必要 public class CompressServer { public static void main(String[] args) throws IOException { if (args.length != 1) // 引数の数が正しいか調べる。 throw new IllegalArgumentException("Parameter(s): <Port>"); int port = Integer.parseInt(args[0]); // サーバポート ServerSocket servSock = new ServerSocket(port); // クライアントの接続要求を受け付けるサーバソケットを生成する。 Logger logger = new ConsoleLogger(); // ログメッセージをコンソールに出力する。 for(;;){ Socket clntSock = servSock.accept(); // ブロックして接続を待つ。 ProtocolFactory protoFactory = new CompressProtocolFactory(); // CompressProtocolFactory()インスタンスを生成する。 protoFactory.createProtocol(clntSock, logger); // createProtocol()メソッドを実行する。 } } }
補足
この問題は、無事解決しました。 アドバイスありがとうございました。