由于这段时间学习了安卓手机端与PC端之间的UDP通信原理,所以就在这里写一写自己的一些心得,我会尽量把自己遇到的难题以及自己的一些感觉写清楚,如果有写的不明朗的地方,还希望多多交流。
在铺上代码之前,我觉得很有将UDP通信的一些函数解释清楚,这样便于读者对之后代码的理解!
UDP和TCP/IP协议一样都是痛通信协议。下面我将简单介绍一下UDP和TCP/IP之间的异同点。
TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说在收发数据之间,双方必须建立可靠的连接,也就是行内术语“三次握手,四次挥手”这里就不作细述,网上有很多资料可查,读者有兴趣的话可以自己去看看。
UDP(User Data Protocol)UDP是一个非连接协议,传输数据之前,源端和终端之间是不建立连接的,简单的抓取来自应用程序的数据,并且将其扔到网络之上。
下面介绍实现安卓与PC之间通信需要的类,并对这些类的作用进行比较详细的叙述
DatagramSocket类:此类表示发送和接送数据的套接字(不明白可以直接跳过)
**简单解释一下DatagramSocket类的构造函数**
DatagramSocket()//构造数据报套接字并将其绑定到本地主机上任何可用的端口
Protected DatagramSocket (DatagramSocketImpl imp1)//创建带有指定DatagramSocketImpl的未绑定的数据报套接字
DatagramSocket(int port) //创建数据报套接字并将其绑定到本地主机绑定的端口号上
DatagramSocket(int port, InetAddress laddr)//创建数据报套接字并将其绑定到本地指定的IP地址和端口号
DatagramSocket(SocketAddress bindaddr) //创建数据报套接字,并将其绑定到本地指定的套接字地址
**DatagramPacket类的构造函数**
DatagramPacket(byte[] buf, int length) //构造DatagramPacket,并接收长度为length的数据包
DatagramPacket(byte[] buf, int lenght, InetAddress address int port) //将长度为length的数据包发送到主机上指定端口号
DatagramSocket(byte[] buf, int offset, int lenght, InetAddress address int port) // 构造数据报包,用来将长度为 length 偏移量为 offset 的包发送到指定主机上的指定端口号
DatagramPacket(byte[] buf, int offset, int length) //构造 DatagramPacket,用来接收长度为 length 的包,在缓冲区中指定了偏移量
DatagramPacket(byte[] buf, int offset, int length, SocketAddress address) //构造数据报包,用来将长度为 length 偏移量为 offset 的包发送到指定主机上的指定端口号
DatagramPacket(