计算机网络是指两台或更多的计算机组成的网络,在同一个网络中,任意两台计算机都可以直接通信,因为所有计算机都需要遵循同一种网络协议。网络编程中有很多协议,如,TCP协议、UDP协议。顾名思义,UDP编程就是以UDP协议为基础的编程。
和TCP编程相比,UDP编程就简单得多,因为UDP没有创建连接,数据包也是一次收发一个,所以没有流的概念。
在Java中使用UDP编程,仍然需要使用Socket,因为应用程序在使用UDP时必须指定网络接口(IP地址)和端口号。注意:UDP端口和TCP端口虽然都使用0~65535,但他们是两套独立的端口,即一个应用程序用TCP占用了端口1234,不影响另一个应用程序用UDP占用端口1234。
在服务器端,使用UDP也需要监听指定的端口。Java提供了DatagramSocket来实现这个功能,服务器端首先要监听一个指定的端口(如1234端口),如果没有其他应用程序占据这个端口,那么监听成功,我们就使用一个无限循环来处理收到的UDP数据包,若要接收一个packet数据包,我们需要根据接收数据的大小创建一个byte[ ]缓冲区,然后通过Dategrampacket实现接收;假设我们收取到的是一个String,那么,通过DatagramPacket返回的packet.getOffset()和packet.getLength()确定数据在缓冲区的开始位置和结束位置,在下面的代码中,我们需要把接收到的字节数组转化为字符串,然后作为key(键)在创建的map中得到相应的value(值),因为怕发送至客户端时出现空指针异常,我们可以在得到value(值)后,可以做一个判断,如果值为null,则