TCP通信-C/SのSocketとServer Socket

3252 ワード

クライアントクラス:Socketクラス
  • TCP通信のクライアント:サーバに接続要求を送信、サーバにデータを送信、サーバのデータを読み出し、2回IOストリーム
  • java.lang.Object継承者java.net.Socket
  • 構築方法:
  • Socket(String host,int port)は、ストリームソケットを作成し、指定したホスト上の指定したポート番号に接続します.パラメータ:String host:サーバホスト名/IPアドレスint port:サーバのポート番号
  • メンバーメソッド:
  • OutputStream getOutputStream()は、このソケットの出力ストリームを返します.
  • InputStream getInputStream()は、このソケットの入力ストリームを返します.
  • void close()クローズソケット
  • 注意:
  • クライアントがサーバ側と対話する場合は、Socketで提供するネットワークストリームを使用する必要があり、自分で作成したストリームオブジェクト
  • を使用することはできません.
  • クライアントSocketオブジェクトを作成すると、TCPプロトコルを使用してサーバと接続パスが確立され、サーバが起動しないと例外が放出されます.


  • サーバクラス:ServerSocketクラスServerSocketクラス
  • TCP通信のサーバ側:クライアントの要求を受け、クライアントから送信データを読み出し、クライアントにデータを書き込み返し、IOストリームを2回行い、ずっと待機状態である
  • .
  • java.lang.Object継承者java.net.ServerSocket
  • 構築方法:
  • ServerSocket(int port)特定のポートにバインドされたサーバソケットを作成し、オペレーティングシステムのランダムな割り当てを設定せずに通信できません.

  • メンバーメソッド
  • Socket accept()は、このソケットへの接続をリスニングし、受け入れます.

  • 注意:サーバ側は、どのクライアントが要求するサーバであるかを知る必要があることを明確にしなければならないので、accept()メソッドを使用して要求されたクライアントオブジェクトSocket
  • を取得することができる.
    package cn.learn.web;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class client {
        public static void main(String[] args) throws IOException {
            //1.       Socket,         IP      
            Socket socket = new Socket("127.0.0.1",8020);
            //2.  Socket      getOutputStream()         OutputStream  
            OutputStream outputStream = socket.getOutputStream();
            //3.     write          ,         
            outputStream.write("     ".getBytes());
    
            //4.  Socket      getInputStream()         InputStream  
            InputStream clientIn = socket.getInputStream();
            //5.  InputStream    read()  ,          
            byte[] bytes = new byte[1024];
            int len =clientIn.read(bytes);
            //    
            System.out.println(new String(bytes,0,len));
    
            //6.    ,   Socket IO   
            socket.close();
    
        }
    }
    
    package cn.learn.web;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class Server {
        public static void main(String[] args) throws IOException {
    
            //1.       ,        
            ServerSocket server = new ServerSocket(8020);
    
            //2.  serverSocket      accept,           Socket(       )
            Socket socket1 = server.accept();
    
            //3.  Socket      getInputStream()         InputStream  
            InputStream serveIn = socket1.getInputStream();
    
            //4.  serveIn   read,          
            byte[] bytes = new byte[1024];
            //           
            int len = serveIn.read(bytes);
            //    
            System.out.println(new String(bytes,0,len));
    
            //5.  Socket      getOutputStream()         OutputStream  
            OutputStream serverOut = socket1.getOutputStream();
    
            //6.  serverOut  write        
            serverOut.write("    ".getBytes());
    
            //7.  socket1 server  
            server.close();
            socket1.close();
        }
    }