java 怎么用UDP实时接收数据?

DatagramSocketds=newDatagramSocket(10000);byte[]buf=newbyte[1024];DatagramPacketdp=ne... 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.如果没有及时接受别人的发过来的数据,会出现什么状况?
例:别人发送了数据给我,我却没有实时接收,那么这算是发送失败?还是发送过来了,缓存在什么地方?
请高人指点。。。。
展开
 我来答
巫难天地难m
推荐于2017-10-04 · TA获得超过263个赞
知道小有建树答主
回答量:173
采纳率:0%
帮助的人:136万
展开全部

我自己写的代码:

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
public class UdpRecvDemo
{

    public static void main(String[] args) throws IOException
    {
        Recv();
    }
    
    public static void Recv() throws IOException
    {
        System.out.println("接受开始......");
        DatagramSocket ds = new DatagramSocket(3388);
        while(true)
        {
            byte[]buf = new byte[1024];
            DatagramPacket dp = new DatagramPacket(buf,buf.length);
            ds.receive(dp);
            System.out.println(ds);
            String ip = dp.getAddress().getHostAddress();
            int port = dp.getPort();
            String text = new String(dp.getData(),0,dp.getLength());
            if(text.equals("exit"))
                {
                    System.out.println(ip+"退出会话......");
                    break;
                }
            System.out.println(ip+":"+port+"===>me "+text);
        }

        ds.close();
    }
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式