TCP聊天

一、项目创建

二、代码

Client类


  
  1. package tcp;
     
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.Socket;
    import java.util.Scanner;
     
    public class Client {
        public static void main(String[] args) {
     
            try {
                Socket socket =new Socket("127.0.0.1",8888);
                System.out.println("连接成功!");
                new ClientSend(socket).start();
                new Clientreive(socket).start();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    /**
     * 用于发送消息线程类
     */
    class ClientSend extends Thread{
        @Override
        public void run() {
            this.sendMsy();
        }
        private Socket socket;
        public ClientSend(Socket socket){
            this.socket  =socket;
        }
        /**
         * 发送消息
         */
        private void sendMsy(){
            Scanner scanner =null;
            PrintWriter pw =null;
            try{
                scanner =new Scanner(System.in);
                pw =new PrintWriter(this.socket.getOutputStream());
                while(true){
                    String str =scanner.nextLine();
                    pw.println(str);
                    pw.flush();
                }
            }catch (Exception e){
                e.printStackTrace();
            }finally {
                if (scanner!=null){
                    scanner.close();
                }
                if (pw!=null){
                    pw.close();
                }
                if (socket!=null){
                    try {
                        socket.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
     
    /**
     *用于接收消息线程类
     */
    class Clientreive extends Thread{
        private Socket socket=null;
        public Clientreive(Socket socket){
            this.socket =socket;
        }
     
        @Override
        public void run() {
            this.receiveMsg();
        }
        /**
         * 用于接收对方消息
         */
        private void receiveMsg(){
            BufferedReader br =null;
            try{
                br =new BufferedReader(new InputStreamReader(this.socket.getInputStream()));
                while(true){
                    String mr = br.readLine();
                    System.out.println("小明:"+mr);
                }
            }catch (Exception e){
                e.printStackTrace();
            }finally {
                if (br!=null){
                    try {
                        br.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
     
            }
        }
    }
    Server类

    package tcp;
     
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.Scanner;
     
    /**
     * 发送消息线程
     */
    class Send extends Thread{
        private Socket socket;
        public Send(Socket socket){
            this.socket  =socket;
        }
        @Override
        public void run() {
            this.sendMsy();
        }
        /**
         * 发送消息
         */
        private void sendMsy(){
            Scanner scanner =null;
            PrintWriter pw =null;
            try{
                scanner =new Scanner(System.in);
                pw =new PrintWriter(this.socket.getOutputStream());
                while(true){
                    String str =scanner.nextLine();
                    pw.println(str);
                    pw.flush();
                }
            }catch (Exception e){
                e.printStackTrace();
            }finally {
                if (scanner!=null){
                    scanner.close();
                }
                if (pw!=null){
                    pw.close();
                }
                if (socket!=null){
                    try {
                        socket.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
     
    /**
     * 接收消息的线程
     */
    class receive extends Thread{
        private Socket socket=null;
        public receive(Socket socket){
            this.socket =socket;
        }
     
        @Override
        public void run() {
            this.receiveMsg();
        }
        /**
         * 用于接收对方消息
         */
        private void receiveMsg(){
            BufferedReader br =null;
            try{
                br =new BufferedReader(new InputStreamReader(this.socket.getInputStream()));
                while(true){
                    String mr = br.readLine();
                    System.out.println("小红说:"+mr);
                }
            }catch (Exception e){
                e.printStackTrace();
            }finally {
                if (br!=null){
                    try {
                        br.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
     
            }
        }
    }
     
    public class Server {
        public static void main(String[] args) {
            ServerSocket serverSocket =null;
            try{
                serverSocket =new ServerSocket(8888);
                System.out.println("服务端已启动等待连接");
                Socket socket = serverSocket.accept();
                System.out.println("连接成功!");
                new Send(socket).start();
                new receive(socket).start();
            }catch(Exception e){
                e.printStackTrace();
            }finally {
                if (serverSocket!=null){
                    try {
                        serverSocket.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }


    三、运行结果

  2. 先运行服务端

  3. 再运行客服端

相关推荐

  1. <span style='color:red;'>TCP</span><span style='color:red;'>聊天</span>

    TCP聊天

    2023-12-10 19:30:05      37 阅读
  2. <span style='color:red;'>TCP</span><span style='color:red;'>聊天</span>

    TCP聊天

    2023-12-10 19:30:05      30 阅读
  3. TCP一对一聊天

    2023-12-10 19:30:05       46 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-10 19:30:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-10 19:30:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-10 19:30:05       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-10 19:30:05       20 阅读

热门阅读

  1. STM32用flash保存参数实现平衡擦写的一种方法

    2023-12-10 19:30:05       31 阅读
  2. 三元组的快速转置(数据结构实训)

    2023-12-10 19:30:05       31 阅读
  3. MyBatis-xml版本

    2023-12-10 19:30:05       43 阅读
  4. RabbitMQ安装在Linux系统详细教程

    2023-12-10 19:30:05       40 阅读
  5. OD机考真题搜集:宜居星球改造计划

    2023-12-10 19:30:05       40 阅读
  6. [ES]ElasticSearch强转日期的时区问题

    2023-12-10 19:30:05       34 阅读
  7. ubuntu源配置文件/etc/apt/sources.list不存在

    2023-12-10 19:30:05       44 阅读
  8. uniapp小程序分享为灰色

    2023-12-10 19:30:05       33 阅读
  9. pdb 调试 python 代码

    2023-12-10 19:30:05       47 阅读