Java通信程序UDP

目录

1 UDP发送数据【应用】

2 UDP接收数据【应用】

3 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();
    }
}
 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵广陆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值