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

运行结果:

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

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

相关文章

  • 一文详解Spring中ResponseEntity包装器的使用

    一文详解Spring中ResponseEntity包装器的使用

    在 Spring 中,ResponseEntity 是 HTTP 响应的包装器,这篇文章主要为大家详细介绍了ResponseEntity包装器的使用,感兴趣的可以了解一下
    2025-02-02
  • Spring中的@Conditional注解实现分析

    Spring中的@Conditional注解实现分析

    这篇文章主要介绍了Spring中的@Conditional注解实现分析,  @Conditional是Spring 4出现的注解,但是真正露出价值的是Spring Boot的扩展@ConditionalOnBean等,需要的朋友可以参考下
    2023-12-12
  • 使用Spring从YAML文件读取内容映射为Map方式

    使用Spring从YAML文件读取内容映射为Map方式

    这篇文章主要介绍了使用Spring从YAML文件读取内容映射为Map方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • SpringBoot 快速实现 api 加密的方法

    SpringBoot 快速实现 api 加密的方法

    在项目中,为了保证数据的安全,我们常常会对传递的数据进行加密,常用的加密算法包括对称加密(AES)和非对称加密(RSA),本文给大家介绍SpringBoot 快速实现 api 加密,感兴趣的朋友一起看看吧
    2023-10-10
  • C#中NAudio音频库的安装与使用教程详解

    C#中NAudio音频库的安装与使用教程详解

    NAudio为.NET平台下的开源库,采用ML-PL协议,它支持许多音频操作,可实现多种API播放与录制、多种不同音频格式等功能,下面就跟随小编一起学习一下NAudio的安装与使用吧
    2023-11-11
  • Java8中常见函数式接口的使用示例详解

    Java8中常见函数式接口的使用示例详解

    在 Java 8 中,函数式接口是一个关键的特性,它们允许将方法作为参数传递或返回类型,本文为大家整理了一些常见的函数式接口的使用,希望对大家有所帮助
    2023-12-12
  • 浅谈图片上传利用request.getInputStream()获取文件流时遇到的问题

    浅谈图片上传利用request.getInputStream()获取文件流时遇到的问题

    下面小编就为大家带来一篇浅谈图片上传利用request.getInputStream()获取文件流时遇到的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • Maven解决jar包版本冲突的4种方法详解

    Maven解决jar包版本冲突的4种方法详解

    这篇文章主要给大家介绍了关于Maven解决jar包版本冲突的4种方法代码,maven工程要导入jar包的坐标,就必须要考虑解决jar包冲突,文中介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • Java位集合之BitMap实现和应用详解

    Java位集合之BitMap实现和应用详解

    这篇文章主要介绍了Java位集合之BitMap实现和应用的相关资料,BitMap是一种高效的数据结构,适用于快速排序、去重和查找等操作,通过简单的数组和位运算,可以在Java中实现BitMap,从而节省存储空间并提高性能,需要的朋友可以参考下
    2024-12-12
  • SpringCloud Finchley+Spring Boot 2.0 集成Consul的方法示例(1.2版本)

    SpringCloud Finchley+Spring Boot 2.0 集成Consul的方法示例(1.2版本)

    这篇文章主要介绍了SpringCloud Finchley+Spring Boot 2.0 集成Consul的方法示例(1.2版本),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08

最新评论