udp通信代码java udp代码实现

在javasocket网络编程中,开发基于udp协议的程序使用的套接字有哪些Socket套接字udp通信代码java,是由系统提供用于网络通信的技术(操作系统给应用程序提供的一组API叫做Socket API)udp通信代码java,是基于TCP/IP协议的网络通信的基本操作单元 。基于Socket套接字的网络程序开发就是网络编程 。
socket可以视为是应用层和传输层之间的通信桥梁udp通信代码java;
传输层的核心协议有两种:TCP,UDPudp通信代码java;socket API也有对应的两组,由于TCP和UDP协议差别很大,因此,这两组API差别也挺大 。
分类:
Socket套接字主要针对传输层协议划分为如下三类:
流套接字:使用传输层TCP协议
TCP , 即Transmission Control Protocol(传输控制协议),传输层协议;
TCP的特点:
有连接:像打电话,得先接通,才能交互数据;
可靠传输:传输过程中,发送方知道接收方有没有收到数据.(打电话就是可靠传输);
面向字节流:以字节为单位进行传输.(非常类似于文件操作中的字节流);
全双工:一条链路,双向通信;
有接收缓冲区,也有发送缓冲区 。
大小不限
对于字节流来说,可以简单的理解为,传输数据是基于IO流,流式数据的特征就是在IO流没有关闭的情况下,是无边界的数据,可以多次发送 , 也可以分开多次接收 。
数据报套接字:使用传输层UDP协议
UDP,即User Datagram Protocol(用户数据报协议),传输层协议 。
UDP的特点:
无连接:像发微信,不需要接通,直接就能发数据;
不可靠传输:传输过程中,发送方不知道接收方有没有收到数据.(发微信就是不可靠传输);
面向数据报:以数据报为单位进行传输(一个数据报都会明确大小)一次发送/接收必须是一个完整的数据报,不能是半个,也不能是一个半;
全双工:一条链路,双向通信;
有接收缓冲区 , 无发送缓冲区;
大小受限:一次最多传输64k;
对于数据报来说,可以简单的理解为,传输数据是一块一块的,发送一块数据假如100个字节,必须一次发送,接收也必须一次接收100个字节,而不能分100次,每次接收1个字节 。
原始套接字
原始套接字用于自定义传输层协议,用于读写内核没有处理的IP协议数据 。
二、UDP数据报套接字编程
UDPSocket中,主要涉及到两类:DatagramSocket、DatagramPacket;
DatagramSocket API
DatagramSocket 创建了一个UDP版本的Socket对象 , 用于发送和接收UDP数据报 , 代表着操作系统中的一个socket文件,(操作系统实现的功能–)代表着网卡硬件设备的抽象体现 。
DatagramSocket 构造方法:
方法签名 方法说明
DatagramSocket() 创建一个UDP数据报套接字的Socket,绑定到本机任意一个随机端口(一般用于客户端)
DatagramSocket(int port) 创建一个UDP数据报套接字的Socket,绑定到本机指定的端口(一般用于服务端)
DatagramSocket 方法:
方法签名 方法说明
void receive(DatagramPacket p) 从此套接字接收数据报(如果没有接收到数据报,该方法会阻塞等待)
void send(DatagramPacket p) 从此套接字发送数据报包(不会阻塞等待 , 直接发送)
void close() 关闭此数据报套接字
DatagramPacket API
代表了一个UDP数据报,是UDP Socket发送和接收的数据报 , 每次发送/接收数据报,都是在传输一个DatagramPacket对象 。
DatagramPacket 构造方法:
方法签名 方法说明
DatagramPacket(byte[] buf, int length) 构造一个DatagramPacket以用来接收数据报,接收的数据保存在字节数组(第一个参数buf)中,接收指定长度(第二个参数length)

推荐阅读