码迷,mamicode.com
首页 > 编程语言 > 详细

Java网络编程之UDP程序设计

时间:2015-04-28 18:16:26      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:

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

}

运行结果:

技术分享

客户端:
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();
    }

}

运行结果:

技术分享

Java网络编程之UDP程序设计

标签:

原文地址:http://www.cnblogs.com/yzl-i/p/4463387.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!