在使用socket连接时需要在发送方和接受方之间建立一个连接,让数据在这个连接中进行传送,这样不需要指明消息的发送方向。但是UDP套接字不需要连接,只是一个单独处理消息的模式,每条消息发往不同的目的地,就好像邮寄东西一样,显然这种发送方式是需要发送方向的。还有一点socket和UDP不同的是,UDP可以接受不同方向的消息,而socket只能接受一个方向的消息。
安全性方面:
在安全性和可靠性方面来说,UDP不如socket来的安全可靠。socket像是一种点对点的连接,中间已经架构了连接,他可以保证发送方的消息发送到接受方(除非断网),万一网络方面有点问题,一旦修复,未发送的消息还是会依次发送,不必担心重发。在这点上UDP做不到,而且在发送过程中有可能出现消息丢失的现象,这就需要用户重发。
7.5.2 Datagram示例
说了半天可能有些抽象,还是来看示例(示例来自J2ME开发网 mingjava)
package com.siemens.datagramtest;
import javax.microedition.io.Datagram;
import javax.microedition.io.DatagramConnection;
public class Sender extends Thread
{
private DatagramConnection dc;
private String address;
private String message;
public Sender(DatagramConnection dc)
{
this.dc = dc;
start();
}
public synchronized void send(String addr, String msg)
{
address = addr;
message = msg;
notify();
}
public synchronized void run()