码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-07-20 18:42:08      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:

简介:在同一主机上测试,同一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程序:

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

技术分享

 

使用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:

技术分享

3、eclipse<console>:

技术分享

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

标签:

原文地址:http://www.cnblogs.com/plant/p/4661737.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!