UDP传输(一)

UDP传输

DatagramSocket与DatagramPacket

建立发送端,接收端。

建立数据包。

调用Socket的发送接收方法。

关闭Socket。

发送端与接收端是两个独立的运行程序。

 

例子1:UDP发送接收数据

import java.io.IOException;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetAddress;

import java.net.SocketException;

import java.net.UnknownHostException;

 

/*

 *UDP协议发送数据:

 * A:创建发送端Socket对象

 * B:创建数据,并把数据打包

 * C:调用Socket对象的发送方法发送数据包

 * D:释放资源

 */

public class SendDemo {

 

         publicstatic void main(String[] args) throws IOException {

                   //TODO Auto-generated method stub

 

                   //创建发送端Socket对象

                   //DatagramSocket()

                   DatagramSocketds = new DatagramSocket();

                  

                  

                   //创建数据,并把数据打包

                   //DatagramPacket(byte[]buf,int length,InetAddress address,int port)

                   //创建数据

                   byte[]bys = "hello,udp,我来了".getBytes();

                   //长度

                   intlength = bys.length;

                   //IP地址

                   InetAddressaddress = InetAddress.getByName("219.216.80.19");

                   //端口

                   intport = 10086;

                   DatagramPacketdp = new DatagramPacket(bys,length,address,port);

                  

                   //调用Socket对象发送数据包

                   //publicvoid send (DatagramPacket dp)

                   ds.send(dp);

                  

                   //释放资源

                   ds.close();

         }

 

}

 

import java.io.IOException;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetAddress;

import java.net.SocketException;

 

/*

 * UDP协议接受数据:

 * A:创建发送端Socket对象

 * B:创建数据包(接受容器)

 * C:调用Socket对象的接受方法接受数据

 * D:解析数据,并显示在控制台

 * D:释放资源

 */

public classReceiveDemo {

 

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

      // TODO Auto-generated method stub

 

      //创建接收端Socket对象

      //DatagramSocket(int port)

      DatagramSocketds = new DatagramSocket(10086);

     

      //创建一个数据包(接收数据)

      byte[] bys = new byte[1024];

      int length = bys.length;

      DatagramPacketdp = newDatagramPacket(bys,length);

     

      //调用Socket对象的接收方法接收数据

      ds.receive(dp);

     

      //解析数据包

      InetAddressaddress = dp.getAddress();

      Stringip = address.getHostAddress();

     

      byte[] bys2 =dp.getData();

      int len = dp.getLength();

      Strings = newString(bys,0,len);

      System.out.println(s);

      System.out.println(ip+":"+s);

     

      //释放资源

      ds.close();

   }

 

}

运行结果:

hello,udp,我来了

219.216.80.19:hello,udp,我来了

 

UDP发送接收数据图解:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值