欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

TCP的客户端和服务端

程序员文章站 2022-06-06 12:10:32
...

TCP服务端

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

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

        /*
        获取客户端的数据并显示在屏幕上

        1.创建tcp服务端socket,明确端口,监听一个端口
        2.服务端只要获取到连接过来的客户端就可以和指定的客户端通信了
        3.通过获取客户端的读取流对象读取客户端发来的数据
        4.并显示屏幕上
        5.关闭资源
         */

        System.out.println("服务端启动");


//          创建tcp服务端socket,明确端口,监听一个端口
        ServerSocket serverSocket = new ServerSocket(6666);

        while (true) {
//          服务端只要获取到连接过来的客户端就可以和指定的客户端通信了
            Socket socket = serverSocket.accept();

            String ip = socket.getInetAddress().getHostAddress();
            System.out.println(ip + "连接");
            
//          通过获取客户端的读取流对象读取客户端发来的数据
            InputStream inputStream = socket.getInputStream();
            BufferedReader bufIn = new BufferedReader(new InputStreamReader(inputStream));

            //给客户端回馈数据.
            OutputStream outputStream = socket.getOutputStream();
            PrintWriter out = new PrintWriter(outputStream,true);//自动刷新

            String line = null;
            while((line=bufIn.readLine()) != null){   //读一行,注意行终止符
                if("over".equals(line)){   //如果客户端发过来的是over,转换结束
                    break;
                }

                System.out.println(line);//打印客户端发来的信息

                out.println(line.toUpperCase());//转成大写通过OutputStream发送回去
//                out.flush();
            }

//          关闭客户端
            socket.close();
        }
        //如果不断的获取客户端,不用关闭服务端.
 //       serverSocket.close();
    }
}

TCP客户端

import java.io.*;
import java.net.Socket;

public class TCPClient {
    public static void main(String[] args) throws IOException {
        /*
        通过TCP传输,将数据发送给服务器
        1.建立tcp的客户端socket,明确服务端的地址和端口
        2.如果通道建立成功就会出现socket,io流
              客户端需要做的就是获取socket流中的输出流,将数据发送到目的地:服务端.
        3.通过socket输出流将数据发送.
        4.关闭资源
         */


        System.out.println("客户端启动");

//        建立tcp的客户端socket,明确服务端的地址和端口
        Socket socket = new Socket("127.0.0.1",6666);


            //获取键盘输入流对象
            BufferedReader keyin = new BufferedReader(new InputStreamReader(System.in));

//        如果通道建立成功就会出现socket,io流.客户端需要做的就是获取socket流中的输出流,将数据发送到目的地:服务端.
            OutputStream outputStream = socket.getOutputStream();
            PrintWriter out = new PrintWriter(outputStream,true);//自动刷新

        //读取服务端返回的数据,通过socket输入流对象
            InputStream inputStream = socket.getInputStream();
            BufferedReader bufIn = new BufferedReader(new InputStreamReader(inputStream));



//        通过socket输出流将数据发送.

            //发送数据
            String line = null;
            while((line = keyin.readLine()) != null){    //读取一行,行终止符
                out.println(line);
//                out.flush();
                if("over".equals(line)){
                    break;
                }

                String upperText = bufIn.readLine();
                System.out.println(upperText);   //自动换行
            }

//        关闭资源
            socket.close();
    }
}