UDP通信程序

熵桥珊瑚
• 阅读 778

UDP通信原理

是一种不可靠的网络协议,只管发送,不管对方是否接收到
UDP通信程序

UDP发送数据

发送数据步骤

UDP协议是用户数据报协议

  • 创建发送端的Socket对象(DatagramSocket) DatagramSocket()
  • 创建数据,并把数据打包 DatagramPacket(byte[] buf,int length,InetAddress address,int port)
  • 调用DatagramSocket对象的方法发送数据 void send(DatagramPacket p)
  • 关闭发送端 void close()
    发送数据程序

    //创建发送端的Socket对象
    //DatagramSocket()构造数据报套接字并将其绑定到本地主机上的任何可用端口
    DatagramSocket ds = new DatagramSocket();//alt enter 抛出异常
    
    //创建数据,并把数据打包
    //DatagramPacket(byte[] buf,int length,InetAddress address,int port) 
    //构造一个数据包,发送长度为length的数据包到指定主机上的指定端口号
    byte[] bys = "hello,udp,我来了".getBytes();
    int length = bys.length;
    InetAddress address = InetAddress.getByName("192.168.1.66"); //alt enter 抛出异常
    int port = 10086;
    //创建数据包
    DatagramPacket dp = new DatagramPacket(bys,length,address ,port);
    
    //上面的几行代码可以优化为
    DatagramPacket dp = new DatagramPacket(bys,bys.length,InetAddress.getByName("192.168.1.66"),port:10086);
    
    //调用DatagramSocket对象的方法发送数据
    //send(DatagramPacket p) 从此套接字发送数据报包
    ds.send(dp);
    //关闭发送端
    //void close() 关闭数据报套接字
    ds.close();

    UDP通信程序

UDP接收数据

接收数据步骤

  • 创建接收端的Socket对象(DatagramSocket) DatagramSocket(int port)
  • 创建一个数据包,用于接收数据 DatagramPacket(byte[] buf,int length)
  • 调用DatagramSocket对象的方法接收数据,把数据接收到数据包中 void receive(DatagramPacket p)
  • 解析数据包,并把数据在控制台显示 byte[] getData() int getLength()
  • 关闭接收端 void close()
    接收数据程序

    //创建接收端的Socket对象用带参构造方法,指定一个端口
    //DatagramSocket(int port)构造数据报套接字并将其绑定到本地主机上的指定端口
    DatagramSocket ds = new DatagramSocket(port:10086);//alt enter 抛出异常
    
    //创建一个数据包,用于接收数据 
    //DatagramPacket(byte[] buf,int length) 
    //构造一个DatagramPacket,用于接收长度为length的数据包
    byte[] bys = new byte[1024];
    //创建数据包
    DatagramPacket dp = new DatagramPacket(bys,bys.length);
    
    //调用DatagramSocket对象的方法接收数据,把数据接收到数据包中
    ds.receive(dp);
    
    //解析数据包,并把数据在控制台显示
    //byte[] getData() 返回数据缓冲区
    byte[] datas = dp.getData();//这个是数据缓冲区
    //int getLength() 返回要发送的数据的长度或者接收到的数据的长度
    int len = dp.getLength();//拿到的是实际发送了多少数据
    String dataString = new String(datas,offset:0,len);
    sout("数据是:"+dataString);
    //上面两行优化
    sout("数据是:"+new String(dp.getData(),offset:0,dp.getLength()));
    //关闭发送端
    //void close() 关闭数据报套接字
    ds.close();

    UDP通信程序

UDP通信程序练习

UDP通信程序
发送数据程序

//创建发送端的Socket对象
DatagramSocket ds = new DatagramSocket();//alt enter 抛出异常

//自己封装键盘录入数据
BufferedReader br = BufferedReader(new InputStreamReader(System.in));
String line;
while((line=br.readLine())!=null){//alt enter 抛出异常
    //所输入的数据是886,发送数据结束
    if("886".equals(line)){
        break;
    }
    //如果不是,就创建数据,并把数据打包
    byte[] bys = line.getBytes();
    //创建数据包
    DatagramPacket dp = new DatagramPacket(bys,length,InetAddress.getByName("192.168.1.66"),port:12345);
    
    //调用DatagramSocket对象的方法发送数据
    ds.send(dp);
}
//关闭发送端
ds.close();

接收数据程序

//创建接收端的Socket对象用带参构造方法,指定一个端口
DatagramSocket ds = new DatagramSocket(port:12345);//alt enter 抛出异常
while(true){//死循环接收
    //创建一个数据包,用于接收数据 
    //DatagramPacket(byte[] buf,int length) 
    //构造一个DatagramPacket,用于接收长度为length的数据包
    byte[] bys = new byte[1024];
    //创建数据包
    DatagramPacket dp = new DatagramPacket(bys,bys.length);

    //调用DatagramSocket对象的方法接收数据,把数据接收到数据包中
    ds.receive(dp);//alt enter 抛出异常

    //解析数据包,并把数据在控制台显示
    sout("数据是:"+new String(dp.getData(),offset:0,dp.getLength()));
}
//关闭发送端
ds.close();
}
点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
Udp简单的服务器与客户端07
UDP协议:UDP协议传输数据是不可靠的,在java中,java.util.DatagramSocket负责接收和发送UDP数据报,java.util.DatagramPacket表示UDP数据表。每个DatagramSocket与一个本底地址绑定,每个DatagramSocket可以把UDP数据报发送给任意一个远程DatagramSocket,
Wesley13 Wesley13
3年前
RPC 定义 和 原理
一、RPC  1.RPC是什么  RPC(RemoteProcedureCallProtocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了
Wesley13 Wesley13
3年前
RPC的简单实现
RPC(RemoteProcedureCall)—远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。RPC采用客户机/
Wesley13 Wesley13
3年前
IM总结
发送消息UDP打洞,登录的时候HTTP。登录成功后,会有一个TCP连接来保持在线状态。这个TCP连接的远程端口一般是80,采用UDP方式登录的时候,端口是8000。如果采用UDP协议,通过服务器中转方式。UDP协议是不可靠协议,它只管发送,不管对方是否收到的。如果client使用UDP协议发送消息后,服务器收到该包,需要使用UDP协议发回一个
Wesley13 Wesley13
3年前
QT TCP网络编程
首先介绍一下TCP:(TransmissionControlProtocol传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。相比而言UDP,就是开放式、无连接、不可靠的传输层通信协议。下面,我一次进行客户端和服务器端的QT实现。我的开发环境是:QTCreator5.7。!oneservertwo
Stella981 Stella981
3年前
Rpc基础 原理 框架
一.RPC的原理1.RPC是什么RPC(RemoteProcedureCallProtocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC
Stella981 Stella981
3年前
RPC简介与hdfs读过程与写过程简介
1.RPC简介RemoteProcedureCall远程过程调用协议  RPC——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络
Wesley13 Wesley13
3年前
MQTT,CoAP,,LWM2M,UDP,TCP各自特点,NB
UDP用户数据报协议(UDP,UserDatagramProtocol)传输层协议1.是无连接的,即发送数据之前不需要建立连接。2.尽最大努力交付,即不保证可靠交付3.传输效率高,适用于对高速传输和实时性有较高的通信或广播通信。4.支持一对一,一对多,多对一和多对多的交互通信。TCP传输控制协议(TCP,Transmis
Wesley13 Wesley13
3年前
Java网络编程——12.UDP
前面几章讨论了在TCP传输层协议之上运行的网络应用程序,TCP是为数据的可靠传输而设计的。用户数据报协议(UserDatagramProtocal,UDP)是在IP之上发送数据的另一种传输层协议,速度很快,但不可靠。当发送UDP数据时,无法知道数据是否会到达,也不知道数据的各个部分是否会以发送时的顺序到达。1、UDP协议类似F
Wesley13 Wesley13
3年前
UDP通讯方式
简介一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,它一旦把应用的程序发送给网络层之后不保留数据的备份。但是因为没有很多安全性的校验使得它的传输速率特别的快。UDP提供了无连接通信,且不对传送数据包进行可靠性保证,适合于一次传输少量数据,UDP传输的可靠性由应用层负责。所需的结构和方法\so
API 小达人 API 小达人
1年前
如何在 Eolink Apikit 中发起 TCP/UDP 文档测试
TCP/UDP是两种常用的网络传输协议。TCP协议提供可靠的连接,而UDP协议提供不可靠的连接。