Java实现在线聊天功能

作者:Lete乐特 时间:2021-10-18 22:16:23 

本文实例为大家分享了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();
        }

    }

}

来源:https://blog.csdn.net/Lott0419/article/details/107221907

标签:Java,在线聊天
0
投稿

猜你喜欢

  • java-for循环问题

    2022-01-22 12:46:53
  • Hadoop源码分析六启动文件namenode原理详解

    2021-08-20 01:03:55
  • 浅谈java中Math.random()与java.util.random()的区别

    2023-11-26 16:37:16
  • 详解Spring Bean的配置方式与实例化

    2022-01-13 05:47:51
  • Java信号量Semaphore原理及代码实例

    2021-10-02 21:55:08
  • SpringBoot+MQTT+apollo实现订阅发布功能的示例

    2021-08-30 22:36:46
  • SpringCloud OpenFeign 服务调用传递 token的场景分析

    2022-12-26 22:24:07
  • Hystrix Dashboard断路监控仪表盘的实现详细介绍

    2022-07-29 05:27:26
  • struts2自定义拦截器的示例代码

    2021-12-01 16:24:52
  • Java8内存模型PermGen Metaspace实例解析

    2023-11-25 10:53:36
  • Java输入年份和月份判断多少天实例代码

    2023-12-23 10:43:11
  • Java接口默认方法带来的问题分析【二义性问题】

    2023-11-27 20:32:55
  • winform绑定快捷键的方法

    2023-12-10 22:16:04
  • 深入理解Java设计模式之代理模式

    2022-01-14 07:42:00
  • Springboot自动装配实现过程代码实例

    2023-11-14 19:50:19
  • 在SpringBoot项目中的使用Swagger的方法示例

    2022-01-04 15:14:39
  • Java java.sql.Timestamp时间戳案例详解

    2023-11-10 13:50:47
  • Java中对List集合的常用操作详解

    2023-05-02 23:52:47
  • spring使用OXM进行对象XML映射解析

    2022-11-11 16:05:19
  • Java实现链表数据结构的方法

    2023-10-19 20:36:57
  • asp之家 软件编程 m.aspxhome.com