UDP服务器开发与nb-iot模组通信(2)----基于java的udp测试

二. 服务器开发(未完待续)

环境: Myeclipse10, nb-iot模组, 公网ip (这里的公网ip是必须的, 腾讯云免费实验室了解下)

服务器搭建:

开发过程中不用nb模组, 没有公网, 可以先用java写一个udpclient进行本地测试

(去网上可以找到很多的网络助手等测试工具)

java版的udp服务器:

public class UDPService {

    private final static int PORT = 53;
    
    public static void main(String[] args) {
    	System.out.println("ServiceLog: listening......");
        try (DatagramSocket socket = new DatagramSocket(PORT)) {
            while (true) {
                try {
                    DatagramPacket request = new DatagramPacket(new byte[1024], 1024);
                    socket.receive(request);                  //获取发送端dp
                    String daytime = new Date().toString();   //系统时间
                    byte[] data = daytime.getBytes("ASCII");
                    String data2=new String(request.getData(),0,request.getLength()); //拼接字符串, 发送值
                    DatagramPacket response = new DatagramPacket(data, data.length, request.getAddress(), request.getPort());
                    socket.send(response);				//发送返回值
                    System.out.println("ServiceLog:"+daytime + " " + request.getAddress()+"\n data:"+data2);
                    if(data2.equals("hello"))
                    	System.out.println("i'm full!!!!");
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

客户端测试代码很简单:

public class UDPClient {

    public static void main(String[] args) throws Exception {

        //数据包套接字:相当于码头,专门处理通信数据及进行数据转发设置的
        DatagramSocket ds=new DatagramSocket();

        String message="Hello Java World!";

        //数据报包:类似于集装箱,用来存储所有的数据信息
        DatagramPacket dp=new DatagramPacket(
                message.getBytes(),   //数据都是已字节数据进行发送的,因此需要将数据进行转换
                message.length(), //发送数据的长度
                InetAddress.getByName("127.0.0.1"),  //发送数据的源ip地址
                3000   //发送数据的端口号
                );
        //ds.receive();
        ds.send(dp);  //数据包通过码头DatagramSocket发送出去
        ds.close();   //数据发送之后关闭通道,减少资源浪费
    }
}

猜你喜欢

转载自blog.csdn.net/qq_37832932/article/details/80827677