• ベストアンサー

TCP/IPソケットプログラミングJava編について

TCP/IPソケットプログラミングJava編という本を使って通信ネットワークの勉強をしています。 この本は一通り読んでプログラムの動作確認を行ったのですが、第4章の圧縮サーバのプログラムの動作確認が取れません。 圧縮サーバのプログラムは、本に乗っていなくて自作する必要があります。 どなたかこのプログラムを作成した方いらっしゃいませんか? いらしたらソースコードを教えていただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • kacchann
  • ベストアンサー率58% (347/594)
回答No.1

これかな? よくは知らないけど。

参考URL:
http://cs.baylor.edu/~donahoo/practical/JavaSockets/textcode.html
debukawa
質問者

お礼

回答ありがとうございます。 探していただいたサイトには、圧縮サーバのコードが載っていませんでした。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()メソッドを実行する。 } } }

debukawa
質問者

補足

この問題は、無事解決しました。 アドバイスありがとうございました。

関連するQ&A