message = null;
notify();
}
}
7.5 Datagram连接简介
7.5.1 Datagram连接简介
提到Datagram网络那么就要对UDP通讯协议做一个简单的介绍了。前面我们介绍的HTTP协议是属于ISO网络曾的应用层,在它下方传输用的是TCP协议,TCP协议在传输数据的时候,如果数据发生错误,那么将重新传输该错误的部分。但是这样以来常常会浪费很多时间,在一些讲究实时性的通讯过程中,这样做有些不切实际。例如我们在观看网络视频的时候,少量的数据丢失并不会有很严重的影响,因此我们就会用到UDP这样的协议。
一个UDP datagram数据包含了地址和数据缓冲区,其中地址是一个URL字符串。在J2ME中发送数据的时候我们使用Datagram.setAddress方法来设置目标地址。(目标地址要包括主机名和端口号)在接收数据的时候,地址是指数据的源地址。数据缓冲区,是一个带有偏移量和长的字节数组,我们的程序可以直接访问该数组,也可以通过DataInputStream和DataOutputStream进行间接的读写。Datagram.getOffset方法对获得数据的偏移量。 通过Datagram.getLength和Datagram.setLength对数据部分的字节长度进行读取和设置。
同样的我们要获得连接就需要用到DatagramConnection,而获得的方法也和前面说到的一样的Connector.open(),所不同的是URL应该满足如下的形式:
l datagram://localhost:5555 这样的话表示建立了一个客户端模式的连接。在指定ip:localhost和指定端口:5555
l datagram://:5555 这样建立的是一个服务器端模式的连接,在本地的5555端口。
建立连接后,我们可以通过DatagramConnection的newDatagram()方法构造一个Datagram,然后调用DatagramConnection的send()方法。
数据流和消息传送:
流套接字从发送方向接受方发送的是连续的数据流,且不要求标记纪录的界限,数据都以不同的包形式发送,而且各个包中的数据也是不同的。
连接和邮寄: