Java使用TCP协议进行通信的基本流程

传输层协议:TCP,面向连接的协议,必须服务端和客户端两端都存在才可以进行数据传输。

先有服务器,再来客户端访问。

服务端:

    1、ServerSocket创建服务器的端口。

    2、Socket  accpt()   阻塞式获取一个客户连接。

    3、getInputStream,getOutputStream获取连接中的io流进行数据操作。

    4、关闭资源

客户端:

    1、new Socket(地址,端口)   创建一个套接字对象,连接上服务器

    2、getInputStream,getOutputStream获取连接中的io流进行数据操作。

    3、关闭资源

 

例子

(为图简洁,以下类或方法在同一个类中。)

服务端:

/**
 * 服务器
 */
class Myserve{
    static void test() throws IOException {
        //1.创建服务器端口
        ServerSocket serverSocket = new ServerSocket(7777);
        //2.阻塞式等待客户连接,接受套接字对象
        Socket client = serverSocket.accept();
        //3.进行操作,例如获取流
        BufferedReader brd = new BufferedReader(new InputStreamReader(client.getInputStream()));
        System.out.println("客户端接收到:"+brd.readLine());
        //4.关闭资源
        brd.close();
        serverSocket.close();
    }
}

客户端:

/**
 * 客户端
 */
class Myclient{
    static void test() throws IOException {
        //1.创建套接字对象,指定目的地址和端口
        Socket client = new Socket("localhost",7777);//2.操作
        BufferedReader brd = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("在此输入要传输的数据:");
        String datas = brd.readLine();

        //把datas写入传输流
        BufferedOutputStream bos = new BufferedOutputStream(client.getOutputStream());
        bos.write(datas.getBytes());


        //3.关闭资源
        bos.close();
        client.close();
    }
}

测试:

public static void main(String[] args) throws IOException {
        //开启一个服务器
        new Thread(()-> {
            try {
                Myserve.test();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }).start();
        //开启一个客户端
        Myclient.test();

    }

运行结果:

 

posted @ 2022-11-17 22:51  在博客做笔记的路人甲  阅读(404)  评论(0编辑  收藏  举报