java使用UDP实现多人聊天功能

 更新时间:2022年02月11日 09:11:41   作者:木子_muzi  
这篇文章主要为大家详细介绍了java使用UDP实现多人聊天功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

使用UDP实现简单聊天功能,供大家参考,具体内容如下

使用UDP实现一个简单的多人聊天功能。该程序使用了多线程,实现了聊天功能。

package 课后作业.E103_10_聊天;

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

//接收
class Receive implements Runnable{
    @Override
    public void run() {
        DatagramSocket receiveSocket = null;
        try {
            receiveSocket = new DatagramSocket(5200);
        } catch (SocketException e) {
            e.printStackTrace();
        }

        while (true) {
            byte[] bytes = new byte[1024];
            //创建一个报文,于与接收
            DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length);
            //接收
            try {
                receiveSocket.receive(datagramPacket);
            } catch (IOException e) {
                e.printStackTrace();
            }
            InetAddress ip = datagramPacket.getAddress();

            System.out.println(ip.getHostName()+ new String(datagramPacket.getData()));
        }
    }
}

//发送
class Send implements Runnable{
    @Override
    public void run() {
        DatagramSocket sendSocket = null;
        try {
            sendSocket = new DatagramSocket();
        } catch (SocketException e) {
            e.printStackTrace();
        }
        Scanner scan = new Scanner(System.in);
        while (true) {
            String str = scan.next();
            //要发送的信息
            byte[] bytes = str.getBytes();
            //发送的目标地址
            InetAddress inetAddress = null;
            try {
                inetAddress = InetAddress.getByName("192.168.108.32");
            } catch (UnknownHostException e) {
                e.printStackTrace();
            }
            //数据报文
            DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length, inetAddress, 5200);
            //发送
            try {
                sendSocket.send(datagramPacket);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

public class Test {
    public static void main(String[] args) {
        Receive receive = new Receive();
        Thread thread = new Thread(receive);
        thread.start();

        Send send = new Send();
        Thread thread1 = new Thread(send);
        thread1.start();
    }
}

运行结果:

这里实现的是两人聊天,想要实现多人聊天只需要将接受地址改成广播地址即可。

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

相关文章

  • 关于logback日志级别动态切换的四种方式

    关于logback日志级别动态切换的四种方式

    这篇文章主要介绍了关于logback日志级别动态切换的四种方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • Springboot POI导出Excel(浏览器)

    Springboot POI导出Excel(浏览器)

    这篇文章主要为大家详细介绍了Springboot POI导出Excel,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • Java+opencv3.2.0实现轮廓检测

    Java+opencv3.2.0实现轮廓检测

    这篇文章主要为大家详细介绍了Java+opencv3.2.0实现轮廓检测,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • java实现坦克大战游戏

    java实现坦克大战游戏

    这篇文章主要为大家详细介绍了java实现坦克大战游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-09-09
  • Java常见的阻塞队列总结

    Java常见的阻塞队列总结

    今天我们来讨论另外一类容器:阻塞队列,文中有非常详细的代码示例及介绍,对正在学习JAVA的小伙伴们很有帮助,需要的朋友可以参考下
    2021-06-06
  • sentinel流量控制框架(目录设置)

    sentinel流量控制框架(目录设置)

    Sentinel 是面向分布式服务架构的高可用流量防护组件帮助开发者保障微服务的稳定性,本文重点给大家介绍sentinel流量控制框架的相关知识,感兴趣的朋友一起看看吧
    2022-03-03
  • 堆排序算法的讲解及Java版实现

    堆排序算法的讲解及Java版实现

    这篇文章主要介绍了堆排序算法的讲解及Java版实现,堆排序基于堆这种数据结构,在本文中对堆的概念也有补充介绍,需要的朋友可以参考下
    2016-05-05
  • Spark调优多线程并行处理任务实现方式

    Spark调优多线程并行处理任务实现方式

    这篇文章主要介绍了Spark调优多线程并行处理任务实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • Java使用 Stream 流和 Lambda 组装复杂父子树形结构

    Java使用 Stream 流和 Lambda 组装复杂父子树形结构

    在最近的开发中,遇到了两个类似的需求:都是基于 Stream 的父子树形结构操作,返回 List 集合对象给前端,下面给大家分享Java使用 Stream 流和 Lambda 组装复杂父子树形结构的相关操作,感兴趣的朋友跟随小编一起看看吧
    2024-07-07
  • Java8通过Function获取字段名的步骤

    Java8通过Function获取字段名的步骤

    这篇文章主要介绍了Java8通过Function获取字段名,需要的朋友可以参考下
    2020-04-04

最新评论