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();
        }

    }

}

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

相关文章

  • Java线程中的Thread.yield()详细解析

    Java线程中的Thread.yield()详细解析

    这篇文章主要介绍了Java线程中的Thread.yield()详细解析,yield()让当前线程从运行状态 转为 就绪状态,以允许具有相同优先级的其他线程获得运行机会,需要的朋友可以参考下
    2023-11-11
  • springcloud之Feign、ribbon如何设置超时时间和重试机制

    springcloud之Feign、ribbon如何设置超时时间和重试机制

    这篇文章主要介绍了springcloud之Feign、ribbon如何设置超时时间和重试机制,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • Java读取.properties配置文件方法示例

    Java读取.properties配置文件方法示例

    这篇文章主要介绍了Java读取.properties配置文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • SpringMVC框架如何与Junit整合看这个就够了

    SpringMVC框架如何与Junit整合看这个就够了

    这篇文章主要介绍了SpringMVC框架如何与Junit整合看这个就够了,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • 老生常谈Java反射机制(必看篇)

    老生常谈Java反射机制(必看篇)

    下面小编就为大家带来一篇老生常谈Java反射机制(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Springboot项目实现将类从@ComponentScan中排除

    Springboot项目实现将类从@ComponentScan中排除

    这篇文章主要介绍了Springboot项目实现将类从@ComponentScan中排除,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Spring框架整合Java Web Token问题

    Spring框架整合Java Web Token问题

    这篇文章主要介绍了Spring框架整合Java Web Token问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-09-09
  • dom4j从jar包中读取xml文件的方法

    dom4j从jar包中读取xml文件的方法

    这篇文章主要介绍了dom4j从jar包中读取xml文件的方法,需要的朋友可以参考下
    2014-02-02
  • java版十大排序经典算法:完整代码(2)

    java版十大排序经典算法:完整代码(2)

    优秀的文章也不少,但是Java完整版的好像不多,我把所有的写一遍巩固下,同时也真诚的希望阅读到这篇文章的小伙伴们可以自己去从头敲一遍,不要粘贴复制!希望我的文章对你有所帮助,每天进步一点点
    2021-07-07
  • Mybatis中连接查询和嵌套查询实例代码

    Mybatis中连接查询和嵌套查询实例代码

    这篇文章主要给大家介绍了关于Mybatis中连接查询和嵌套查询的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12

最新评论