Java实现在线聊天功能

 更新时间:2022年09月15日 10:31:03   作者:Lete乐特  
这篇文章主要为大家详细介绍了Java实现在线聊天功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Java实现在线聊天功能的具体代码,供大家参考,具体内容如下

效果

关键代码

创建Client.java

import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

/**
 * @author Lete
 * @乐特的程序永无BUG
 * @createDate 2020- 07-04 22:13
 *
 * 1. SendThread 发送消息线程
 * 2. RecieveThread 接受消息线程
 */
public class Client {
    public static void main(String[] args) {

        try {
            // 创建8888端口
            Socket s = new Socket("127.0.0.1", 8888);

            // 启动发送消息线程
            new SendThread(s).start();
            // 启动接受消息线程
            new RecieveThread(s).start();

        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

创建Server.java

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

/**
 * @author Lete
 * @乐特的程序永无BUG
 * @createDate 2020- 07-04 22:13
 *
 * 1. SendThread 发送消息线程
 * 2. RecieveThread 接受消息线程
 */
public class Server {
    public static void main(String[] args) {
        try {

            // 监听8888端口
            ServerSocket ss = new ServerSocket(8888);

            System.out.println("监听在端口号:8888");
            Socket s = ss.accept();

            //启动发送消息线程
            new SendThread(s).start();
            //启动接受消息线程
            new RecieveThread(s).start();

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
}

创建RecieveThread.java

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

/**
 * @author Lete
 * @乐特的程序永无BUG
 * @createDate 2020- 07-04 22:13
 *
 * 1. SendThread 发送消息线程
 * 2. RecieveThread 接受消息线程
 */
public class RecieveThread extends Thread {

    private Socket s;

    public RecieveThread(Socket s) {
        this.s = s;
    }

    public void run() {
        try {

            // 接收对方输入的内容
            InputStream is = s.getInputStream();
            DataInputStream dis = new DataInputStream(is);

            while (true) {
                String msg = dis.readUTF();
                System.out.println(msg);
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}

创建SendThread.java

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

/**
 * @author Lete
 * @乐特的程序永无BUG
 * @createDate 2020- 07-04 22:13
 *
 * 1. SendThread 发送消息线程
 * 2. RecieveThread 接受消息线程
 */
public class SendThread extends Thread {

    private Socket s;

    public SendThread(Socket s) {
        this.s = s;
    }

    public void run() {
        try {

            // 获取输入的内容
            OutputStream os = s.getOutputStream();
            DataOutputStream dos = new DataOutputStream(os);

            while (true) {
                Scanner sc = new Scanner(System.in);
                String str = sc.next();
                dos.writeUTF(str);
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • RocketMQ消息重试机制原理分析讲解

    RocketMQ消息重试机制原理分析讲解

    这篇文章主要介绍了RocketMQ消息重试机制,消息的发送和消费并不是百分百成功的,在出现消息推送失败时,RocketMQ有何补偿方式来进行消息重试呢?这是我们今天要一起学习的点
    2023-02-02
  • SpringBoot 自定义starter yaml提示失效问题及解决方法

    SpringBoot 自定义starter yaml提示失效问题及解决方法

    在自定义starter后,必不可少会有properties配置参数需要指定,而在有时又不知道为什么出现这个问题,这篇文章主要介绍了SpringBoot 自定义starter yaml提示失效问题,需要的朋友可以参考下
    2022-12-12
  • Java 自动安装校验TLS/SSL证书

    Java 自动安装校验TLS/SSL证书

    这篇文章主要介绍了Java 自动安装校验TLS/SSL证书的示例,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下
    2020-10-10
  • Spring Boot集成MyBatis的方法

    Spring Boot集成MyBatis的方法

    今天小编就为大家分享一篇关于Spring Boot集成MyBatis的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • JAVA并发中VOLATILE关键字的神奇之处详解

    JAVA并发中VOLATILE关键字的神奇之处详解

    这篇文章主要给大家介绍了关于JAVA并发中VOLATILE关键字的神奇之处的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • java泛型常用通配符实例解析

    java泛型常用通配符实例解析

    这篇文章主要介绍了java泛型常用通配符实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • Spring Boot配置内容加密实现敏感信息保护

    Spring Boot配置内容加密实现敏感信息保护

    之前我们讲过的配置相关知识都是Spring Boot原生就提供的,而今天我们将介绍的功能并非Spring Boot原生就支持,但却非常有用:配置内容的加密
    2021-11-11
  • java实现题目以及选项乱序的方法实例

    java实现题目以及选项乱序的方法实例

    这篇文章主要给大家介绍了关于java实现题目以及选项乱序的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 使用Mybatis-Plus实现对象属性自动填充功能

    使用Mybatis-Plus实现对象属性自动填充功能

    这篇文章主要介绍了如何使用Mybatis-Plus实现对象属性自动填充功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,感兴趣的朋友们下面随着小编来一起来学习吧
    2024-01-01
  • Java对象在JVM中的生命周期详解

    Java对象在JVM中的生命周期详解

    这篇文章主要介绍了Java对象在JVM中的生命周期详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05

最新评论