1.干货代码
  

public static String sendMsg2Network() {

        DatagramSocket socket = null;
        Boolean flag = true;
        try {
           //创建一个信息socket服务端
            socket = new DatagramSocket();
            -------------------------------------↓↓↓↓↓↓↓↓↓↓↓↓发送数据到指定端口↓↓↓↓↓↓↓↓↓↓↓---------------------------------------------
             //连接远程服务端接口
                     //需要传输的数据
                    byte[] netConfigBytes = netConfig.getBytes();
                    DatagramPacket datagramPacket = new DatagramPacket(netConfigBytes,
                            netConfigBytes.length,
                            new InetSocketAddress(IP地址, 端口号));
                    socket.send(datagramPacket);
                }
            }
            if (StringUtils.isNotEmpty(configration)) {
                byte[] bytes = configration.getBytes();
                DatagramPacket datagramPacket = new DatagramPacket(bytes,
                        bytes.length,
                        new InetSocketAddress(IP地址, 端口号));
                socket.send(datagramPacket);
            }



            -------------------------------------↓↓↓↓↓↓↓↓↓↓↓↓接收数据↓↓↓↓↓↓↓↓↓↓↓---------------------------------------------
            System.out.println(-----------创建数据包,用于接收客户端发送的数据--------);




           //这里的flag标识是否接受完本次数据
            while (flag) {
                byte[] bytes = new byte[64];
                DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length);
                System.out.println(------------此方法在接收到数据之前会一直进行阻塞--------------------);
                try {
                    //阻塞--向发送的socket中的接收客户端传来的数据
                    socket.receive(datagramPacket);
                    flag = false;
                    new Thread(new Process(datagramPacket)).start();
                    byte[] data = datagramPacket.getData();
                    String configInfo = new String(data, UTF-8);
                   return configInfo;
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            socket.close();
        }
本机作为服务端(发送方),没有再次创建监听接口去接收客户端传来的数据。原因如下:
作为服务端传输数据到客户端,客户端可以接收到数据,但是端口发生了变化,变成了随机端口,所以创建的
监听窗口制定的端口号没有办法得到客户端传来的数据。

有知道为什么大佬,可以教一下小弟谢谢。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐