UDP通信

UDP通信

DatagramPacket

       UDP是一种面向无连接的协议,也就是在通信时发送端和接收端不用建立连接.UDP通信的过程就像是货运公司在两个码头间发送货物一样.在码头发送和接收货物时都需要使用集装箱来装载货物,UDP通信也是一样,发送和接收的数据也需要使用“集装箱”进行打包,为此JDK中提供了一个DatagramPacket类,该类的实例对象就相当于一个集装箱,用于封装UDP通信中发送或者接收的数据.

        想要创建一个DatagramPacket对象,首先需要了解一下它的构造方法。在创建发送端和接收端的DatagramPacket对象时,使用的构造方法有所不同,接收端的构造方法只需要接收一个字节数组来存放接收到的数据,而发送端的构造方法不但要接收存放了发送数据的字节数组,还需要指定发送端IP地址和端口号。

接下来根据API文档的内容,对DatagramPacket的构造方法进行逐一详细地讲解。

        第一个方法是DatagramPacket(byte[] buf ,int length)主要是构造了DatagramPacket()方法,用来接收length的数据包.

        使用该构造方法在创建DatagramPacket对象时,指定了封装数据的字节数组和数据的大小,没有指定IP地址和端口号。很明显,这样的对象只能用于接收端,不能用于发送端。因为发送端一定要明确指出数据的目的地(ip地址和端口号),而接收端不需要明确知道数据的来源,只需要接收到数据即可。

        第二个方法是DatagramPacket(byte[] buf,int length,InetAddressaddress,int port)这个方法主要是构造了数据报包,用来将长度为length的包发送的指定的主机的指定端口号.

       使用该构造方法在创建DatagramPacket对象时,不仅指定了封装数据的字节数组和数据的大小,还指定了数据包的目标IP地址(addr)和端口号(port)。该对象通常用于发送端,因为在发送数据时必须指定接收端的IP地址和端口号,就好像发送货物的集装箱上面必须标明接收人的地址一样。

主要类方法

InetAddress    getAddress() 返回某台机器的 IP 地址,此数据报将要发往该机器或者是从该机器接收到的。

byte[]getData()返回数据缓冲区。

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

intgetPort()返回某台远程主机的端口号,此数据报将要发往该主机或者是从该主机接收到的。

public class MainApp {

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

       

         //获取本机IP对象

         InetAddress localHost =InetAddress.getLocalHost();

         //获取本机ip地址和主机名

         System.out.println("ip地址:"+localHost.getHostAddress());

         System.out.println("主机名:"+localHost.getHostName());

        

         //获取百度IP对象

         InetAddress chuanzhiHost =InetAddress.getByName("www.baidu.com");

         //获取百度ip地址和主机名

         System.out.println("ip地址:"+chuanzhiHost.getHostAddress());

         System.out.println("主机名:"+chuanzhiHost.getHostName());

        

   }

}

 

 

   

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值