黑马程序员UDP入门

标题UDP协议特点

∙ \bullet UDP是一种无连接、不可靠传输的协议。
∙ \bullet 将数据源IP,目的地IP和端口以及数据封装成数据包,大小限制在64KB内,直接发送出去即可。
DatagramPacket:数据包对象

构造器说明
public DatagramPacket(byet[] buf,int length, InetAddress address,int port)创建发送端数据包对象 buf:要发送的内容,字节数组。length:要发送内容的字节长度。address:接收端的IP地址对象。port:接收端端口号
public DatagramPacket(byet[] buf,int length)创建接收端的数据包对象 buf:用来存储接受的内容。 length:能接收内容的长度。

DatagramSocket:发送端和接收端对象

构造器说明
public DatagramSocket()创建发送端的socket对象,系统随机分配一个端口号。
public DatagramSocket(int port)创建接收端的Socket对象并指定端口号

DatagramSocket类成员方法

方法说明
public void send(DatagramPacket dp)发送数据包
public void receive(DatagramPacket p)接收数据包

UDP 一发 一收

接收端代码

package com.lp.d2_udp1;

import java.net.DatagramPacket;
import java.net.DatagramSocket;

/*
* 接收端
* */
public class ServerDemo2 {
    public static void main(String[] args) throws Exception {
        System.out.println("=======服务端启动=======");
//        1、创建接收端的数据包对象:注册端口
        DatagramSocket socket=new DatagramSocket(8888);
//        2、创建一个数据包对象接受数据
        byte[] buffer=new byte[1024*64];
        DatagramPacket packet=new DatagramPacket(buffer, buffer.length);
//        3、等待接收数据
        socket.receive(packet);
//        4、取出数据即可
        int length=packet.getLength();
        String rs=new String(buffer,0,length);
        System.out.println("收到了:"+rs);
        String ip=packet.getSocketAddress().toString();
        System.out.println(ip);
        socket.close();
    }
}

发出端代码

package com.lp.d2_udp1;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

/*
* 发送端
* */
public class ClientDemo1 {
    public static void main(String[] args) throws Exception {
        System.out.println("=======客户端启动========");
//        1、创建发送端对象:发送端自带默认端口
        DatagramSocket socket=new DatagramSocket();
//        2、创建一个数据包对象封装数据
        byte[] buffer="诸天气荡荡,我道日兴隆".getBytes();
        DatagramPacket packet=new DatagramPacket(buffer, buffer.length, InetAddress.getLocalHost(),8888);
//        3、发送数据出去
        socket.send(packet);
        socket.close();
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值