Java DatagramSocket和DatagramPacket

1 Java DatagramSocket和DatagramPacket

Java DatagramSocket和DatagramPacket类用于无连接Socket编程。

2 Java DatagramSocket类

Java DatagramSocket类表示用于发送和接收数据报包的无连接Socket。

DatagramSocket基本上是一种信息,但不能保证其内容,到达或到达时间。

2.1 Java DatagramSocket类的构造方法

构造方法 描述
DatagramSocket() throws SocketEeption 创建一个DatagramSocket,并将其与本地计算机上的可用端口号绑定。
DatagramSocket(int port) throws SocketEeption 创建一个DatagramSocket,并将其与给定的端口号绑定。
DatagramSocket(int port, InetAddress address) throws SocketEeption 创建一个DatagramSocket,并将其与指定的端口号和主机地址绑定。

3 Java DatagramPacket类

Java DatagramPacket是可以发送或接收的消息。如果发送多个数据包,则它可能以任何顺序到达。此外,不能保证数据包的传递。

3.1 Java DatagramPacket类的构造方法

构造方法 描述
DatagramPacket(byte[] barr, int length) 创建一个DatagramPacket。该构造函数用于接收数据包。
DatagramPacket(byte[] barr, int length, InetAddress address, int port) 创建一个DatagramPacket。该构造函数用于发送数据包。

4 DatagramSocket和DatagramPacket的例子

4.1 通过DatagramSocket发送DatagramPacket

package com.yiidian;

/**
 * 一点教程网: http://www.yiidian.com
 */
/**
 *  通过DatagramSocket发送DatagramPacket
 */
import java.net.*;
public class DSender{
    public static void main(String[] args) throws Exception {
        DatagramSocket ds = new DatagramSocket();
        String str = "Welcome java";
        InetAddress ip = InetAddress.getByName("127.0.0.1");

        DatagramPacket dp = new DatagramPacket(str.getBytes(), str.length(), ip, 3000);
        ds.send(dp);
        ds.close();
    }
}

4.2 通过DatagramSocket接收DatagramPacket

package com.yiidian;

/**
 * 一点教程网: http://www.yiidian.com
 */
/**
 *  通过DatagramSocket接收DatagramPacket
 */
import java.net.*;
public class DReceiver{
    public static void main(String[] args) throws Exception {
        DatagramSocket ds = new DatagramSocket(3000);
        byte[] buf = new byte[1024];
        DatagramPacket dp = new DatagramPacket(buf, 1024);
        ds.receive(dp);
        String str = new String(dp.getData(), 0, dp.getLength());
        System.out.println(str);
        ds.close();
    }
}

4.3 效果演示

先启动DReceiver,再启动DSender

推荐好课