java 怎么用UDP实时接收数据

DatagramSocket ds = new DatagramSocket(10000);

byte[] buf = new byte[1024];

DatagramPacket dp = new DatagramPacket(buf,0,buf.length);

ds.receive(dp);

String data = new String(dp.getData(), 0, dp.getLength());

ds.close();


上面的代码可以接收UDP发送来的数据。
但我想知道,下面几个问题:
1.怎么实时接收别人发送过来的数据呢?
例:我不知道别人什么时候发数据给我,我该怎么做到实时接收别人发给我的数据?
2.如果没有及时接受别人的发过来的数据,会出现什么状况?
例:别人发送了数据给我,我却没有实时接收,那么这算是发送失败?还是发送过来了,缓存在什么地方?
3.如果有缓存,怎么设置缓存大小?
请高人指点。。。。

UDP 多线程服务端 和 简单客户端

【Java TCP/IP Socket】TCP Socket(含代码)

http://blog.csdn.net/wintys/article/details/3525643/