public static class hiSocket.TCP extends hiRef.V2<InputStream,OutputStream> implements AutoCloseable
   socketのInputStreamとOutputStreamをまとめたものです。
   バイト列の送受信に使います。
   
   データ送受信用socketであり、クライアント側でもサーバ側でも使用します。
   クライアント側での接続はconnect(String,int,int)で行います。
   サーバ側での接続はjava標準のjava.net.ServerSocketを用い、
   connect(ServerSocket,int)で行います。
   
   送信用のメソッドwrite(byte[],int,int)と受信用の
   メソッドread(byte[],int,int)を持ちます。
   
   変数value1とvalue2を持ち、
   value1がBufferedInputStreamでvalue2がBufferedOutputStreamとなります。
   何れもconnect時に接続socketから作成されます。
   これらを利用することも可能ですが、通常は本クラスに用意された
   read/writeを用います。
   
例えば次のようにデータの送受信ができます。
   // サーバー側
   import otsu.hiNote.*;
   import java.net.*;
   public class TestS {
      final static int default_port=5963;
      final static int time_out    =60000;//60秒
      public static void main(String[] args){
         try{
            ServerSocket   con = hiSocket.newServerSocket(hiU.atoi(args[0],default_port));
            hiSocket.TCP sock= new hiSocket.TCP(con,time_out);
            byte data[]={1,2,3,4};
            for(int i=0;i<5;++i){
               sock.write(data,0,4);
               if( (sock.read(data,0,4))==-1 ) break;
               System.out.println("S received data="+hiU.str(data));
               ++data[0];
               }
            sock.close();
            }
         catch(Exception e){
            e.printStackTrace(hiU.err);
            System.exit(1);
            }
         }
      }
   // クライアント側
   import otsu.hiNote.*;
   public class TestC {
      final static int default_port=5963;
      final static int time_out    =60000;//60秒
      public static void main(String[] args){
         try{
            hiSocket.TCP sock
                 = new hiSocket.TCP("localhost",hiU.atoi(args[0],"port-num"),time_out);
            byte data[]=new byte[4];
            while( (sock.read(data,0,4))!=-1 ){
               System.out.println("C received data="+hiU.str(data));
               ++data[0];
               sock.write(data,0,4);
               }
            sock.close();
            }
         catch(Exception e){
            e.printStackTrace(hiU.err);
            System.exit(1);
            }
         }
      }
   // 実行
   java TestS 5006
   java TestC 5006
   // 出力
   クライアント側
   C received data=[1, 2, 3, 4]
   C received data=[3, 2, 3, 4]
   C received data=[5, 2, 3, 4]
   C received data=[7, 2, 3, 4]
   C received data=[9, 2, 3, 4]
   サーバ側
   S received data=[2, 2, 3, 4]
   S received data=[4, 2, 3, 4]
   S received data=[6, 2, 3, 4]
   S received data=[8, 2, 3, 4]
   S received data=[10, 2, 3, 4]
   
   
   // 補足
   hiU.atoi(args[0],default_port)はデフォルト値を持つintの文字列解析です。
   hiU.str(data)はjava.util.Arrays.toString(data)でも
   構いません。長くなるのでhiUのメソッドを使いました。なおArrays.toString()は配列以外受け付け
   ませんがhiU.str()は単純Objectでも表示可能でありシンプルになります。
   
   シリアライズ可能なクラスオブジェクトを送受信する通信機
   hiScket.TCP.ForObject<T>と
   テキストを送受信するための通信機hiSocket.TCP.ForTextが
   別途用意されています。
   
| 修飾子とタイプ | クラスと説明 | 
|---|---|
| static class  | hiSocket.TCP.ForObject<T>socketによるシリアライズObjectのジェネリック送受信機. | 
| static class  | hiSocket.TCP.ForTextテキスト送受信機能を持つsocket. | 
| コンストラクタと説明 | 
|---|
| TCP()接続されていない状態のインスタンスを作る. | 
| TCP(ServerSocket con_,
   int timeout_)サーバ側でコネクトする. | 
| TCP(String serverName_,
   int serverPort_,
   int timeout_)クライアント側でコネクトする. | 
| 修飾子とタイプ | メソッドと説明 | 
|---|---|
| void | close()socketおよびstreamをcloseする(exceptionはない). | 
| void | connect(ServerSocket con_,
       int timeout_)サーバ側でコネクトする. | 
| void | connect(String serverName_,
       int serverPort_,
       int timeout_)クライアント側でコネクトする. | 
| void | flush()送信flushする. | 
| static hiSocket.TCP | newSocket()接続されていない状態のインスタンスを作る. | 
| static hiSocket.TCP | newSocket(ServerSocket con_,
         int timeout_)サーバ側でコネクトする. | 
| static hiSocket.TCP | newSocket(String serverName_,
         int serverPort_,
         int timeout_)クライアント側でコネクトする. | 
| int | read()1バイト読み込む. | 
| int | read(byte[] b_,
    int off_,
    int len_)指定バイト受信する. | 
| void | set_timeout(int timeout_)socketのso-timeout値をセットします。 | 
| void | write(byte[] b_)指定バイトを送信する. | 
| void | write(byte[] b_,
     int off_,
     int len_)指定バイトを送信する. | 
| void | write(int b_)1バイト送信する. | 
| void | writeNoFlush(byte[] b_)指定バイトを送信する(flushしない). | 
| void | writeNoFlush(byte[] b_,
            int off_,
            int len_)指定バイトを送信する(flushしない). | 
| void | writeNoFlush(int b_)1バイト送信する(flushしない). | 
public Socket socket
public boolean autoFlush
public TCP()
public TCP(String serverName_, int serverPort_, int timeout_)
serverName_ - サーバー側名前serverPort_ - ポート側のポートtimeout_ - タイムアウトミリ秒(ただし1000ミリ代のみ見る)RuntimeException - IOExceptionをcauseとして持つ。public TCP(ServerSocket con_, int timeout_)
サーバ側でソケットのコネクトをします。
int port= 5004; ServerSocket con = new ServerSocket(port); TCP sock= new hiSocket.TCP(con,60);
con_ - サーバのコネクトポイントtimeout_ - タイムアウト時間(ミリ秒)RuntimeException - IOExceptionをcauseとして持つ。public static hiSocket.TCP newSocket()
hiSocket.TCP _tcp= hiSocket.TCP.newSocket(); hiSocket.TCP _tcp= new hiSocket.TCP();//と同じ
public void connect(String serverName_, int serverPort_, int timeout_)
serverName_ - サーバー側名前serverPort_ - ポート側のポートtimeout_ - タイムアウトミリ秒(ただし1000ミリ代のみ見る)RuntimeException - IOExceptionをcauseとして持つ。public static hiSocket.TCP newSocket(String serverName_, int serverPort_, int timeout_)
 hiSocket.TCP _tcp= hiSocket.TCP.newSoket("192.168.1.36",8003,30000);
 hiSocket.TCP _tcp= new hiSocket.TCP("192.168.1.36",8003,30000);// と同じ
serverName_ - サーバー側名前serverPort_ - ポート側のポートtimeout_ - タイムアウトミリ秒(ただし1000ミリ代のみ見る)RuntimeException - IOExceptionをcauseとして持つ。public static hiSocket.TCP newSocket(ServerSocket con_, int timeout_)
サーバ側でソケットのコネクトをします。
int port= 5004; ServerSocket con = new ServerSocket(port); TCP sock= hiSocket.TCP.newSocket(con,60);
con_ - サーバのコネクトポイントtimeout_ - タイムアウト時間(ミリ秒)RuntimeException - IOExceptionをcauseとして持つ。public void connect(ServerSocket con_, int timeout_)
サーバ側でソケットのコネクトをします。
int port= 5004; ServerSocket con = new ServerSocket(port); hiBibarySocket sock= new hiSocket.TCP(); sock.connect(con,60);
con_ - サーバのコネクトポイントtimeout_ - タイムアウト時間(ミリ秒)RuntimeException - IOExceptionをcauseとして持つ。public void close()
close インタフェース内 AutoCloseablepublic void set_timeout(int timeout_)
soTimeoutをセットします。
次の操作を行います。
socket.setSoTimeout(timeout_);
timeout_ - タイムアウト時間(ミリ秒)RuntimeException - IOExceptionをcauseとして持つ。public int read(byte[] b_,
                int off_,
                int len_)
指定バッファの指定offset位置以降に指定バイト受信します。
指定バイトになるまでブロックします。
EOFの場合-1を返します。
b_ - バッファoff_ - オフセットlen_ - 長さRuntimeException - IOExceptionをcauseとして持つ。public int read()
1バイト読み込みます。EOFに達すると-1を返します。
RuntimeException - IOExceptionをcauseとして持つ。public void write(byte[] b_,
                  int off_,
                  int len_)
指定バッファの指定offset位置以降の指定長データを送信します。
autoFlushがセットされている場合flushします。
b_ - バッファoff_ - オフセットlen_ - 長さRuntimeException - IOExceptionをcauseとして持つ。public void write(byte[] b_)
指定バッファの内容を送信します。
autoFlushがセットされている場合flushします。
b_ - バッファRuntimeException - IOExceptionをcauseとして持つ。public void writeNoFlush(byte[] b_,
                         int off_,
                         int len_)
指定バッファの指定offset位置以降の指定長データを送信します。
autoFlushがセットされている場合でもflushしません。
b_ - バッファoff_ - オフセットlen_ - 長さRuntimeException - IOExceptionをcauseとして持つ。public void writeNoFlush(byte[] b_)
指定バッファの内容を送信します。
autoFlushがセットされている場合でもflushしません。
b_ - バッファRuntimeException - IOExceptionをcauseとして持つ。public void write(int b_)
1バイトデータを送信します。
autoFlushがセットされている場合flushします。
b_ - バイトデータRuntimeException - IOExceptionをcauseとして持つ。public void writeNoFlush(int b_)
1バイトデータを送信します。
autoFlushがセットされている場合でもflushしません。
b_ - バイトデータRuntimeException - IOExceptionをcauseとして持つ。public void flush()
RuntimeException - IOExceptionをcauseとして持つ。