Java基础—socket编程—UDP发送及接收

简介:在同一主机上测试,同一IP地址,不同的端口,使用UDP发收数据

使用socket编程,通过UDP协议发送数据

需求:使用UDP协议向某IP的某端口发送一条数据

UdpSend.java

package com.Train;



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传输:

/**步骤:---

 * 1、建立udp socket 接收和发送点

 * 2、提供数据,打包

 * 3、使用send发送

 * 4、关闭资源

 * */



public class UdpSend {



    public static void main(String[] args) throws SocketException, UnknownHostException {

        /** 1、建立udp socket端点 */

        

        DatagramSocket s = new DatagramSocket();

        

        /** 2、提供数据,封装打包  ---DatagramPacket(byte[] buf, int length, InetAddress address, int port)  */

        

        byte[] bs = "正在使用UDP发送--我是数据! ".getBytes(); 

        DatagramPacket dp = new DatagramPacket(bs, bs.length, InetAddress.getByName("192.168.1.189"), 8070);



        /** 3、使用send发送 */

        try {

            s.send(dp);

        } catch (IOException e) {

            System.out.println("发送失败: ");

            e.printStackTrace();

        }

        

        /** 4、关闭资源 */

        s.close();

        

    }



}

运行以上Java程序:

在网络数据收发工具中获取到数据:

image

 

使用socket编程,通过UDP协议接收数据

UdpRecv.java

package com.Train;



import java.net.DatagramPacket;

import java.net.DatagramSocket;



//udp传输: 接收

/**步骤:---

* 1、建立udp socket,设置接收端口

* 2、预先创建数据存放的位置,封装

* 3、使用receive阻塞式接收

* 4、关闭资源

* */

public class UdpRecv {



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

        /**1、建立udp socket,设置接收端口*/

        

        DatagramSocket ds = new DatagramSocket(3020);



        /**2、预先创建数据存放的位置,封装*/

        byte [] bbuf = new byte [1024];

         DatagramPacket dp = new DatagramPacket(bbuf,bbuf.length);

         

         /**3、使用receive阻塞式接收*/

         ds.receive(dp);

          

         System.out.println("ip::"+dp.getAddress().getHostAddress()+"\nport::"+dp.getPort()+"\ndata::"+new String(dp.getData()));

         

         /**4、关闭资源*/

         ds.close();

    }



}

测试步骤:

1、运行UdpRecv.java程序后,观察console的输出:无

2、使用网络收发工具,通过UDP协议向3020端口发送数据,点击send:

image

3、eclipse<console>:

image

你可能感兴趣的:(socket编程)