java网络编程基础——UDP通信之DatagramSocket

import java.net.*;
/*
通过UDP传输方式,将文字数据发送出去
①建立udp服务,udp端点。
②提供数据,将数据封装到数据包中
③通过socket服务的发送功能,将数据包发送出去
④关闭资源
    
*/
class UdpSend
{
     public  static  void main(String[] args)  throws Exception 
    {
//         try{
            DatagramSocket ds= new DatagramSocket(8888);     // 此处的端口号为从发送端的主机的8888端口发出
            
// 相当于第一步,可传(端口号),(端口号+InetAddress对象),或者不传参数()
            
             byte[] data="UDP Hellow World Sending Message".getBytes();
            DatagramPacket dp= new DatagramPacket(data,data.length,InetAddress.getLocalHost(),10000);
             // 相当于第二步,此处的10000端口为目的主机的端口为10000

            ds.send(dp);
             // 第三步
            
            ds.close();
//         }


    }
}
/*----------------------------分隔符-------------------------------------------*/

/*
用于接受udp数据包,
①定义udpsocket服务
②定义一个数据包,因为要存储要接收到的数据
③通过socket服务的receive方法将收到的数据存入定义好的数据包中
④通过数据包对象的特有功能,将这些不同的数据取出,打印在控制台上。
⑤关闭资源
*/
class UdpRece
{
     public  static  void main(String[] args) throws Exception
    {
         // 步骤一建立udp socket,加上端口号,表示要监听哪个端口
        DatagramSocket ds= new DatagramSocket(10000 );

         // 步骤二,定义数据包
         byte[] buf= new  byte[1024];
        DatagramPacket dp= new DatagramPacket(buf,buf.length);

         // 步骤三,通过服务的receive方法将收到的数据存入数据包中
        ds.receive(dp); // dp中的DatagramPacket有数据了!

        
// 步骤四,读取数据包中的数据,那到底该怎么拿呢?查文档
        String ip=dp.getAddress().getHostAddress(); // 发现getAddress返回ip地址的封装类InetAddress,
                                        
// 再用getHostAddress获得获得发送方的ip地址
        String data= new String(dp.getData(),0,dp.getLength());     // getData可获得数据缓冲区,即接受到的数据
                                        
// 但这是byte[]数组类型,转换!!
         int port=dp.getPort();     // 获得端口号,即发送方的端口号,不多解释
        System.out.println(ip+"::"+data+"::"+port);         // 打印查看结果吧
        

    }

}

转载于:https://www.cnblogs.com/johnjohnjohn/archive/2013/04/15/3022752.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值