首页 > Web开发 > 详细

37.1 net-- udp传输

时间:2019-08-19 12:07:28      阅读:87      评论:0      收藏:0      [点我收藏+]

一、打开接收端

package day35_net_网络编程.udp传输;

import java.io.IOException;
import java.net.*;

/*
 * 使用UDP协议接收数据
        创建接收端Socket对象
        接收数据
        解析数据
        输出数据
        释放资源

 */
public class UdpReceiveDate {
    public static void main(String[] args) throws IOException {
        int port = 8888;
        InetAddress address = InetAddress.getLocalHost();

        //1.创建接收端Socket对象
        DatagramSocket ds = new DatagramSocket(8888,address);

        //2.接收数据 void receive(DatagramPacket p) 从此套接字接收数据报包。
        //DatagramPacket(byte[] buf, int length) 构造 DatagramPacket,用来接收长度为 length 的数据包。
        byte[] byts = new byte[1024];
        int length = byts.length;

        DatagramPacket dp = new DatagramPacket(byts,length);

        System.out.println(1);
        ds.receive(dp);//阻塞
        System.out.println(2);

        //3.输出数据
        // byte[] getData() 返回数据缓冲区。

        byte[] byt = dp.getData();
        int len = dp.getLength();
        String data = new String(byt,0,len);

        System.out.println("send -->"+ address.getHostName() + "---" + data);

        //4.释放资源
        ds.close();

    }
}

 

二、发送端,发送数据

package day35_net_网络编程.udp传输;

import java.io.IOException;
import java.net.*;

/*
 * 使用UDP协议发送数据
        创建发送端Socket对象
        创建数据并打包
        发送数据
        释放资源
 *
 * DatagramSocket:此类表示用来发送和接收数据,基于UDP协议的
 *
 * DatagramSocket() :创建Socket对象并随机分配端口号
 * DatagramSocket(int port) :创建Socket对象并指定端口号
 *
 * * UDP协议收发数据的注意事项:
 *         端口号错误,数据可以正常发出,不会出现异常,但是收不到数据(udp无连接,只管发不管能不能收到)
 *         Exception in thread "main" java.net.BindException: Address already in use: Cannot bind
 *             端口号已经绑定了
 */
public class UdpSendDate {
    public static void main(String[] args) throws IOException {

        //1.创建发送端Socket对象,构造方法DatagramSocket(int port, InetAddress laddr)
        DatagramSocket ds = new DatagramSocket();

        //2.发送数据void send(DatagramPacket p)
        //发包构造方法:DatagramPacket(byte[] buf, int length, InetAddress address, int port) 构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。
        String s = "hello udp 0000";
        byte[] byts = s.getBytes();
//        int length = 1024;
        int length = byts.length;
        int port = 8888;
        //使用本地地址发送数据
        InetAddress address = InetAddress.getLocalHost();
        DatagramPacket dp = new DatagramPacket(byts,length,address,port);

        //3.发送数据
        ds.send(dp);

        //4.释放资源
        ds.close();
    }
}

 

三、输出

技术分享图片

 

37.1 net-- udp传输

原文:https://www.cnblogs.com/longesang/p/11375593.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!