java中基于UDP_IP协议的网络

来源:互联网 发布:java 如何调用dos命令 编辑:程序博客网 时间:2024/06/04 18:24

UDP网络通信

>类DatagramSocket和DatagramPacket实现了基于UDP协议网络程序

>UDP数据报通过数据包套接字DatagramSocket发送和接收,系统不能保证UDP数据报一定能够安全送到目的地,也不能确定什么时候可以抵达

>DatagramPacket对象封装了UDP数据报,在数据报中包含了发送端的IP地址和端口号以及接收端的IP地址和端口号。

>UDP协议中每个数据报都给出了完整的地址信息,因此无需建立接收方和发送方的连接。

UDP编程的实现

package com.jk.java;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import org.junit.Test;//UDP编程的实现public class TestUDP {//发送端@Testpublic void send(){DatagramSocket ds = null;try { ds = new DatagramSocket();byte[] b  = "你好,我是要发送的数据".getBytes();//创建一个数据报,每一个数据报不能大于64K,都记录着数据信息,发送端的IP、端口号、以及要发送到的接收端的IP、端口号DatagramPacket pack = new DatagramPacket(b, 0, b.length, InetAddress.getByName("127.0.0.1"), 9090);ds.send(pack);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{if(ds != null){ds.close();}}}//接收端    @Test    public void receive(){    DatagramSocket ds = null;try {ds = new DatagramSocket(9090);byte[] b = new byte[1024];//用来接收长度为 length 的包,在缓冲区中指定了偏移量。DatagramPacket pack = new DatagramPacket(b, 0, b.length);ds.receive(pack);String string = new String(pack.getData(), 0, pack.getLength());System.out.println(string);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{if(ds != null){ds.close();}}    }}


0 0