java网络编程之 UDP的使用


User DatagramSocket Protocol 的简称,是一种无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,以及到达目的地时间以及内容的正确性都是不能保证的,每个传输的数据报必须限定在64KB之内。

主要使用下面两个类:

DatagramPacket:此类表示数据报包

DataPramSocket :此类用来表示发送和接收数据包的套接字。

UDP协议中不存在服务器端客户端,因为其并没有建立真正的连接。

发送端:

发送过程:

1:将要发送的数据报打包

2:创建UDPsocket对象

3:发送数据。

代码如下:

public class UDPService {

public static void main(String[] args) throws IOException {

String info = "hello client I am from UDPService ";

//把要发送的数据转换成字节数组

byte []bytes = info.getBytes();

// 数据报打包

try {

DatagramPacket data = new DatagramPacket(bytes, 0, bytes.length, InetAddress.getByName("localhost"),8000);

//创建一个UDPSocket对象

DatagramSocket datagramSocket = new DatagramSocket(3000);//表示我自己的端口号(如果另一个端口想要发送数据必须写这个端口号)

datagramSocket.send(data);//发送数据报

System.out.println("发送完毕");

catch (UnknownHostException e) {

e.printStackTrace();

}

}

}

接收端:

接收端与发送端的过程刚好相反。

public class UDPClient {

public static void main(String[] args) throws IOException {

    byte bytes []= new byte [1024];

//创建数据报包

    DatagramPacket  dp = new DatagramPacket(bytesbytes.length);

    //创建UDP协议的Socket对象

    DatagramSocket  socket = new DatagramSocket(8000);

    socket.receive(dp);//接收数据会造成堵塞

    String info =(new String ( dp.getData(),0,dp.getLength()));

    System.out.println(info);

    socket.close();

}

}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值