JAva基礎知識回顧のjava Socket学習(二)--TCPプロトコルプログラミング

13449 ワード

TCP転送(転送制御プロトコル):TCPプロトコルは、接続に向けた信頼性の高いバイトストリームサービスである.クライアント側とサーバ側が互いにデータを交換する前に、双方の間にTCP接続を確立してから、データの転送を行う必要がある.1台のホストからのワードスロットルをインターネットの他のホストに間違いなく送信する.送信側で上位層を転送する責任を負うバイトストリームは、メッセージセグメントに分けて下位層に渡される.受信側では、メッセージの再編成を担当して上層部に渡す.TCPはタイムアウト再送、重複データの廃棄、検査データ、流量制御などの機能を提供し、データが一端から他端に伝達されることを保証する.
サービス:
package cn.itcast.net.p4.tcp;



import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.net.ServerSocket;

import java.net.Socket;



public class ServerDemo {



    /**

     * @param args

     * @throws IOException 

     */

    public static void main(String[] args) throws IOException {

//                       ,        。 

        /*

         *   tcp      :

         * 1,     socket  。  ServerSocket  。

         * 2,             ,         。

         * 3,            。

         * 4,         socket            

         *                 。

         * 5,    。    ,    。 

         */

        

        //1       。

        ServerSocket ss = new ServerSocket(10002);

        

        //2,            。

        Socket s = ss.accept();//   .

        

        String ip = s.getInetAddress().getHostAddress();

        

        //3,  socket       ,           

        InputStream in = s.getInputStream();

        

        byte[] buf = new byte[1024];

        

        int len = in.read(buf);

        String text = new String(buf,0,len);

        System.out.println(ip+":"+text);

                

        s.close();

        ss.close();

        

    }



}

 
クライアント:
import java.io.IOException;

import java.io.OutputStream;

import java.net.Socket;

import java.net.UnknownHostException;



public class ClientDemo {



    /**

     * @param args

     * @throws IOException 

     * @throws UnknownHostException 

     */

    public static void main(String[] args) throws UnknownHostException, IOException {

        //          

        /*

         * Tcp  ,        。

         * 1,  tcp   socket  。    Socket  。

         *                       。      。 

         * 2,        ,           。

         *              socket  ,       。     ,        ,    。

         *                    ,   Socket   。 

         *             getOutputStream(), getInputStream()        。

         * 3,     ,     。 

         * 4,    。 

         */

        

        

        //     socket  。

        Socket socket = new Socket("192.168.1.101",10002);

        

        //  socket      。 

        OutputStream out = socket.getOutputStream();

        

        

        //

        out.write("tcp  :     !".getBytes());

        

        //

        socket.close();

    }



}

出力:192.168.1.101:tcpプレゼンテーション:また来た!
 
サービス側はクライアントのデータを受け取った後、クライアントにメッセージを返します.
package cn.itcast.net.p4.tcp;



import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.net.ServerSocket;

import java.net.Socket;



public class ServerDemo2 {



    /**

     * @param args

     * @throws IOException 

     */

    public static void main(String[] args) throws IOException {

//                       ,        。 

        /*

         *   tcp      :

         * 1,     socket  。  ServerSocket  。

         * 2,             ,         。

         * 3,            。

         * 4,         socket            

         *                 。

         * 5,    。    ,    。 

         */

        

        //1       。

        ServerSocket ss = new ServerSocket(10002);

        

        //2,            。

        Socket s = ss.accept();

        

        String ip = s.getInetAddress().getHostAddress();

        

        //3,  socket       ,           

        InputStream in = s.getInputStream();

        

        byte[] buf = new byte[1024];

        

        int len = in.read(buf);

        String text = new String(buf,0,len);

        System.out.println(ip+":"+text);

        

        

        

        //     socket              

        OutputStream out = s.getOutputStream();

        out.write("            ".getBytes());

        

        s.close();

        ss.close();

        

    }



}

 
クライアント:
package cn.itcast.net.p4.tcp;



import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.net.Socket;

import java.net.UnknownHostException;



public class ClientDemo2 {



    /**

     * @param args

     * @throws IOException 

     * @throws UnknownHostException 

     */

    public static void main(String[] args) throws UnknownHostException, IOException {

        //          

        /*

         * Tcp  ,        。

         * 1,  tcp   socket  。    Socket  。

         *                       。      。 

         * 2,        ,           。

         *              socket  ,       。     ,        ,    。

         *                    ,   Socket   。 

         *             getOutputStream(), getInputStream()        。

         * 3,     ,     。 

         * 4,    。 

         */

        

        

        

        Socket socket = new Socket("192.168.1.101",10002);

        

        

        OutputStream out = socket.getOutputStream();    

        

        

        out.write("tcp  :     !".getBytes());

        

        

        

        //          ,  socket   。 

        InputStream in = socket.getInputStream();

        byte[] buf = new byte[1024];

        

        int len = in.read(buf);

        

        String  text = new String(buf,0,len);

        

        System.out.println(text);

        

        

        

        //

        socket.close();



    }



}

結果:
クライアントから送信されたメッセージを受信