UDP通讯协议

常见的通讯协议有udp和tcp。

先来简单了解一下这两个协议各自的特点:

UDP:

--将数据及源、目的封装在数据包中,不需要建立连接;

--每个数据包的大小限制在64k以内;

--因无连接,是不可靠协议;

--不需要建立连接,所以传输速度快,但是容易丢失数据;

总之:Udp是面向无连接的通讯协议,传输数据时,不管对端服务是否启动,直接发送。

日常中使用Udp技术的软件有:飞秋、视频会议等;

TCP:

--建立连接,形成传输数据的通道;

--在连接中进行大的数据量传输;

--通过三次握手完成连接,是可靠协议;

--必须建立连接,效率会稍低;

日常中使用Tcp技术的软件有:打电话的场景,下载。

了解了以上两种常用的通讯协议之后,再认识一下网络通讯的机制:Socket  

Socket:

--就是为网络服务提供的一种机制;

--通信的两端都有Socket;

--网络通信其实就是Socket建的通信;

--数据再两个Socket间通过 IO 传输。

也可以这样理解:Socket就像连接航线两端的港口。

============================优雅的分割线============================

我们在实现网络编程时,最重要的是要理解并掌握其实现的原理:

下面先讲解一下Udp传输的原理:

--1、Udp传输技术基于 DatagramSocket 与 DatagramPacket对象;

--2、建立发送端、接收端;

--3、建立数据包;

--4、调用Socket的发送接收方法;

--5、关闭Socket;

--6、发送端和接收端是两个独立的运行程序;

下面来看一个简单Udp传输Demo:

//发送端:

UDP通讯协议

UDP通讯协议

package com.shindo.java.udp; import java.net.*; /** * 需求:通过Udp传输方式,将一段文字数据发送 出去; * * 思路: * 1、建立UdpSocket服务; * 2、提供数据,并将数据封装到数据包中; * 3、通过Socket服务的发送功能,将数据包发出去 * 4、关闭资源 */ public class UdpSend { public static void main(String[] args)throws Exception{ //1、创建Udp服务,通过DatagramSocket对象 DatagramSocket ds = new DatagramSocket(); //2、确定数据,并封装成数据包 byte[] buf = "This\'s UdpSend test first Demo".getBytes(); /*DatagramPacket(byte[] buf, int length, InetAddress address, int port) 构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。 */ DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("127.0.0.1"),11010); //3、通过Socket服务,将已有的数据包发送出去,通过send方法 ds.send(dp); Thread.sleep(10000); //4、关闭资源 ds.close(); } }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zggpwf.html