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

}

}

 

 

你可能感兴趣的:(java)