千家信息网

java如何实现基于UDP协议的聊天小程序

发表于:2025-11-10 作者:千家信息网编辑
千家信息网最后更新 2025年11月10日,小编给大家分享一下java如何实现基于UDP协议的聊天小程序,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!UDP(User
千家信息网最后更新 2025年11月10日java如何实现基于UDP协议的聊天小程序

小编给大家分享一下java如何实现基于UDP协议的聊天小程序,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!

UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。正因为UDP协议没有连接的过程,所以它的通信效率高;但也正因为如此,它的可靠性不如TCP协议高。QQ就使用UDP发消息,因此有时会出现收不到消息的情况。

利用UDP协议的发送和接收,模拟聊天小程序

创建聊天程序的A端:

1、发送信息到接收端
1 、准备发送的信息【键盘录入】
2 、指定接受端的 ip
3 、指定接收端的端口
4 、打包【创建 DatagramPacket 的对象】
5 、发送【创建 DatagramSocket 的对象】
2、接收接收回复的信息
1 、准备接收使用字节数组
2 、把数组封装为数据报包【创建 DatagramPacket 的对象】
3 、接收数据
4 、解析报包有效数据
3 、上述操作循环操作

创建聊天程序的B端:

1、接收发送端的信息
1 、准备接收使用字节数组
2 、把数组封装为数据报包【创建 DatagramPacket 的对象】
3 、接收数据【创建 DatagramSocket 的对象】
4 、解析报包有效数据
2、回复发送端的信息
1 、准备发送的信息【键盘录入】
2 、指定发送的 ip 【解析接收的报包的 ip 即可】
3 、指定接收端的端口【解析接收的报包的端口即可】
4 、打包【创建 DatagramPacket 的对象】
5 、发送
3、上述操作循环操作

端口一:

package com.offcn.second; import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.util.Scanner; public class MyQQ {    public static void main(String[] args) throws Exception{        DatagramSocket ds = new DatagramSocket();        Scanner sc= new Scanner(System.in);        while(true){            //发送消息            System.out.print("My:");            //输入发送信息            String smsg = sc.nextLine();            //byte[] sbs = smsg.getBytes();            //int slen = sbs.length;            //创建数据包            DatagramPacket sdp = new DatagramPacket(smsg.getBytes(),//数据转为byte数组                    smsg.getBytes().length,//数据长度                    InetAddress.getLocalHost(),//接收端端口号                    9999);//接收端,端口号            //发送            ds.send(sdp);            //接收消息            //创建接收数据的数据包            DatagramPacket rdp = new DatagramPacket(new byte[1024],1024);            //接收数据            ds.receive(rdp);            //将接收的数据转为字符串            String rmsg = new String(rdp.getData(),0,rdp.getLength());            //打印输出            System.out.println("His:"+rmsg);           }    }}

端口二:

package com.offcn.second; import java.net.DatagramPacket;import java.net.DatagramSocket;import java.util.Scanner; public class HisQQ {    public static void main(String[] args) throws Exception{        DatagramSocket ds = new DatagramSocket(9999);        Scanner sc = new Scanner(System.in);        while(true){            //创建接收数据的数据包            DatagramPacket rdp = new DatagramPacket(new byte[1024],1024);            ds.receive(rdp);            //将接收的数据转换为字符串            String rmsg = new String(rdp.getData(),0,rdp.getLength());            //输出接收到的信息            System.out.println("His:"+rmsg);              //给对方回消息            //输入发送的数据            System.out.print("My:");            String smsg = sc.nextLine();            //创建发送数据的数据包            DatagramPacket sdp = new DatagramPacket(smsg.getBytes(),                    smsg.getBytes().length,                    rdp.getAddress(),                    rdp.getPort());            ds.send(sdp);        }    }}

运行结果:

以上是"java如何实现基于UDP协议的聊天小程序"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

0