Java通信程序UDP

简介: Java通信程序UDP

1 UDP发送数据【应用】

Java中的UDP通信

UDP 协议是一种不可靠的网络协议,它在通信的两端各建立一个 Socket 对象,但是这两个 Socket 只是发

送,接收数据的对象,因此对于基于 UDP 协议的通信双方而言,没有所谓的客户端和服务器的概念

Java 提供了 DatagramSocket 类作为基于 UDP 协议的 Socket

构造方法

相关方法

发送数据的步骤

创建发送端的 Socket 对象 (DatagramSocket)

创建数据,并把数据打包

调用 DatagramSocket 对象的方法发送数据

关闭发送端

代码演示

public class SendDemo {
    public static void main(String[] args) throws IOException {
//创建发送端的Socket对象(DatagramSocket)
// DatagramSocket() 构造数据报套接字并将其绑定到本地主机上的任何可用端口
        DatagramSocket ds = new DatagramSocket();
//创建数据,并把数据打包
//DatagramPacket(byte[] buf, int length, InetAddress address, int port)
//构造一个数据包,发送长度为 length的数据包到指定主机上的指定端口号。
        byte[] bys = "hello,udp,我来了".getBytes();
        DatagramPacket dp = new
                DatagramPacket(bys,bys.length,InetAddress.getByName("192.168.1.66"),10086);
//调用DatagramSocket对象的方法发送数据
//void send(DatagramPacket p) 从此套接字发送数据报包
        ds.send(dp);
//关闭发送端
//void close() 关闭此数据报套接字
        ds.close();
    }
}

2 UDP接收数据【应用】

接收数据的步骤

创建接收端的Socket对象(DatagramSocket)

创建一个数据包,用于接收数据

调用DatagramSocket对象的方法接收数据

解析数据包,并把数据在控制台显示

关闭接收端

构造方法

相关方法

示例代码

public class ReceiveDemo {
    public static void main(String[] args) throws IOException {
//创建接收端的Socket对象(DatagramSocket)
        DatagramSocket ds = new DatagramSocket(12345);
        while (true) {
//创建一个数据包,用于接收数据
            byte[] bys = new byte[1024];
            DatagramPacket dp = new DatagramPacket(bys, bys.length);
//调用DatagramSocket对象的方法接收数据
            ds.receive(dp);
//解析数据包,并把数据在控制台显示
            System.out.println("数据是:" + new String(dp.getData(), 0,
                    dp.getLength()));
        }
    }
}

3 UDP通信程序练习【应用】

案例需求

UDP 发送数据:数据来自于键盘录入,直到输入的数据是 886 ,发送数据结束

UDP 接收数据:因为接收端不知道发送端什么时候停止发送,故采用死循环接收

代码实现

/*
UDP发送数据:
数据来自于键盘录入,直到输入的数据是886,发送数据结束
*/
public class SendDemo {
    public static void main(String[] args) throws IOException {
//创建发送端的Socket对象(DatagramSocket)
        DatagramSocket ds = new DatagramSocket();
//自己封装键盘录入数据
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String line;
        while ((line = br.readLine()) != null) {
//输入的数据是886,发送数据结束
            if ("886".equals(line)) {
                break;
            }
//创建数据,并把数据打包
            byte[] bys = line.getBytes();
            DatagramPacket dp = new DatagramPacket(bys, bys.length,
                    InetAddress.getByName("192.168.1.66"), 12345);
//调用DatagramSocket对象的方法发送数据
            ds.send(dp);
        }
//关闭发送端
        ds.close();
    }
}
/*
UDP接收数据:
因为接收端不知道发送端什么时候停止发送,故采用死循环接收
*/
public class ReceiveDemo {
    public static void main(String[] args) throws IOException {
//创建接收端的Socket对象(DatagramSocket)
        DatagramSocket ds = new DatagramSocket(12345);
        while (true) {
//创建一个数据包,用于接收数据
            byte[] bys = new byte[1024];
            DatagramPacket dp = new DatagramPacket(bys, bys.length);
//调用DatagramSocket对象的方法接收数据
            ds.receive(dp);
//解析数据包,并把数据在控制台显示
            System.out.println("数据是:" + new String(dp.getData(), 0,
                    dp.getLength()));
        }
//关闭接收端
// ds.close();
    }
}
目录
相关文章
|
18天前
|
存储 Java 数据库连接
java多线程之线程通信
java多线程之线程通信
|
1月前
|
Java
java程序导出堆文件
java程序导出堆文件
|
1月前
|
SQL Oracle Java
sql文件批处理程序-java桌面应用
sql文件批处理程序-java桌面应用
25 0
|
1月前
|
存储 Java
Java:编写程序,计算两个数的和、差、积、商和余数。docx
Java:编写程序,计算两个数的和、差、积、商和余数。docx
|
16天前
|
Java Maven
【Java报错】显示错误“Error:java: 程序包org.springframework.boot不存在“
【Java报错】显示错误“Error:java: 程序包org.springframework.boot不存在“
35 3
|
3天前
|
Java
网页运行java程序cheerpj
网页运行java程序cheerpj
29 0
|
3天前
|
存储 网络协议 关系型数据库
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
|
1月前
|
Java
elasticsearch使用java程序添加删除修改
elasticsearch使用java程序添加删除修改
9 0
|
1月前
|
Java
java程序
re是java运行时的环境,包含jvm和运行时所需要的类库 jdk是java开的程序包,包含jre和开发人员使用的工具 jvm就是我们常说的java虚拟机,他是整个java实现跨平台的最核心 的部分,所有的java程序会首先被编译为.class的类文件,这种类文 件可以在虚拟机上执行。也就是说class并不直接与机器的操作系统 相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释 给本地系统执行。 只有jvm还不能成class的执行,因为再解释class的时候jvm需要调用 解释所需要的类库lib,而jre包含lib类库。jvm屏蔽了与具体操作系 统平台相关的信息,使得java程
17 0
|
1月前
|
网络协议 Java
Java——UDP数据报
Java——UDP数据报
12 0