Java网络编程之UDP程序设计

1.UDP简介

      使用UDP发送消息,对方不一定收到,因为所有的信息使用数据报的形式发送出去,这就要求客户端要始终等待接收服务器发送过来的信息,在Java中使用DatagramSocket类和DatagramPacket类完成UDP程序的开发。

2.程序实现

使用DatagramPacket类包装一条要发送的信息,之后使用DatagramSocket类用于完成信息的发送操作。DatagramPacket类的常用方法:

类型

方法

描述

构造

DatagramPacket(byte[] buf, int length)

构造 DatagramPacket,用来接收长度为 length 的数据包。
构造 DatagramPacket(byte[] buf, int length, InetAddress address, int port) 构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。
byte[] getData() 返回数据缓冲区。
int

getLength()

返回将要发送或接收到的数据的长度。

DatagramSocket类常用方法:

类型

方法

描述

构造 DatagramSocket(int port) 创建数据报套接字并将其绑定到本地主机上的指定端口。
void

send(DatagramPacket p)

从此套接字发送数据报包。
void

receive(DatagramPacket p)

从此套接字接收数据报包。

 

服务器端:
package org.demo.net;



import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetAddress;



public class UDPServer {

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

        DatagramSocket ds = null;

        DatagramPacket dp = null;

        ds = new DatagramSocket(3000);

        String str = "hello";

        dp = new DatagramPacket(str.getBytes(),str.length(),

                InetAddress.getByName("localhost"),9000);

        System.out.println("发送信息。");

        ds.send(dp);

        ds.close();

    }



}

运行结果:

2

客户端:
package org.demo.net;



import java.net.DatagramPacket;

import java.net.DatagramSocket;



public class UDPClient {

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

        DatagramSocket ds = null;

        byte[] buf = new byte[1024];//定义接收数据的字节数组

        DatagramPacket dp = null;

        ds = new DatagramSocket(9000);

        dp = new DatagramPacket(buf,1024);

        System.out.println("等待数据接收。");

        ds.receive(dp);

        String str = new String(dp.getData(),0,dp.getLength())+"from"

                +dp.getAddress().getHostAddress()+":"+dp.getPort();

        System.out.println(str);

        ds.close();

    }



}

运行结果:

3

你可能感兴趣的:(java网络编程)