Java: TCP Socket Echo Server/Client サンプル

以下の2つのサンプルコードはローカルでTCP Socketを用いたEchoサーバ/クライアントを走らせるもの。Javaのネットワークプログラミングで基本となるクラスとメソッドの使いどころを確認しておきたくて作成。まぁ今はnioがデファクトですけど。

サーバ

クライアント

尚、java.io.InputStream#read(byte b[], int off, int len)の仕様は下記の通り。
(忘れてたので備忘録としてメソッドのコメントより抜粋)

* @param b the buffer into which the data is read.
* @param off the start offset in array b
* at which the data is written.
* @param len the maximum number of bytes to read.
* @return the total number of bytes read into the buffer, or
* -1 if there is no more data because the end of
* the stream has been reached.

使い方はサーバ→クライアントの順で起動する。

実行結果

サーバ側

クライアント側

リファレンス

  1. クラス Socket
  2. クラス ServerSocket

コメント

  1. 匿名 より:

    いろいろ調べていたらここに来ました。
    私の知りたいことがここにありそうです。
    xportのI/O出力はサンプルプログラムをVbで改造して使えるようになりましたが、入力の方はできなくて、
    しょうがないからJavaのサンプルソースをEclipseに入れて、入力を読み取る仕組みやコードはどこにあるか
    解析中です。
    要するに私はxportを使ってランでI/Oの入力と出力をやりたいだけです。
    たとえば外出先から留守にしている家の中の電灯を点けたり、部屋の温度が40度以上になったら外出先の
    マイパソコンに通知(火災の報知ではない)してくれるとか、とにかくたわいもないことですが、そういったことを
    独学でできるようになるまでの過程が楽しいです。でも、知識のある人からアドバイスを受けたほうが楽です。

    • yukun より:

      最近仕事が立て込んでまして・・・コメント承認・返信遅れました。。来週からは欧州出張の為、ご連絡が滞るかもしれません。
      さて、上記のソースをご覧頂いたようで、参考の一つになれば幸いです。基本I/Oストリームの考えはプログラミング言語横断ですので、サーバ/クライアントを、下記のような組み合わせにすることも可能なので、面白いです。
      例) Java/VB、Java/ActionScript、C/Python
      xportのI/O入出力プログラミングが上手く行くと良いですね。