Java UDP 实现NB-IOT通信

之前测试的时候有于对UDP通信理解存在误区,所以测试一直未接受返回数据
UDP协议进行信息传递之前不需要建立链接,就是说服务端存在响应与否不用管,只需要提供主机IP及端口号。

package com.xzy.utils;
import java.net.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
class Test
{
    public static void main(String[] args) throws Exception
    {
        DatagramSocket ds = new DatagramSocket();
        myDatagramSocketReceive receiveData=new myDatagramSocketReceive(ds);
        new Thread(receiveData).start();
        String str = "注册码";
        ds.send(new DatagramPacket(
                str.getBytes(), str.getBytes().length,
                InetAddress.getByName("IP"), port));
    }
}

class myDatagramSocketReceive implements Runnable
{
    private DatagramSocket ds;
    private DatagramPacket dp;
    private byte[] buf;
    myDatagramSocketReceive(DatagramSocket ds)
    {
        try
        {
            this.ds = ds;
        }
        catch (Exception e)
        {
            throw new RuntimeException("Receive DatagramSocket");
        }
        buf=new byte[1024*4];
    }
    public void close()
    {
        ds.close();
    }
    public void run()
    {
        while(true)
        {
            try
            {
                dp=new DatagramPacket(buf,buf.length);
                ds.receive(dp);
                System.out.println(dp.getAddress().getHostName()+":"+(new String(dp.getData(),0,dp.getLength())));
            }
            catch (Exception e)
            {
                throw new RuntimeException("Receive");
            }
        }
    }
}

你可能感兴趣的:(Java UDP 实现NB-IOT通信)