导航菜单

页面标题

页面副标题

六分钟步行测试管理软件 v1.1.0.2112120029 - GUdpMulticast.java 源代码

正在查看: 六分钟步行测试管理软件 v1.1.0.2112120029 应用的 GUdpMulticast.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package com.gg.reader.api.dal;

import com.gg.reader.api.entity.GMulticast;
import com.gg.reader.api.protocol.gx.Message;
import com.gg.reader.api.utils.ThreadPoolUtils;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.MulticastSocket;
import java.net.NetworkInterface;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;

public class GUdpMulticast {
    private String _GroupIP;
    private int _GroupPort;
    private InetAddress address;
    public HandlerDebugLog debugLog;
    public HandlerUdpMulticast handlerUdpMulticast;
    private MulticastSocket ms;
    private DatagramPacket dataPacket = null;
    private Boolean keepReceive = false;
    private int index = 0;

    static int access$208(GUdpMulticast gUdpMulticast) {
        int i = gUdpMulticast.index;
        gUdpMulticast.index = i + 1;
        return i;
    }

    public GUdpMulticast(String str, int i, int i2) {
        this.ms = null;
        this._GroupIP = "230.1.1.168";
        this._GroupPort = 8161;
        try {
            this._GroupIP = str;
            this._GroupPort = i;
            MulticastSocket multicastSocket = new MulticastSocket(this._GroupPort);
            this.ms = multicastSocket;
            multicastSocket.setSoTimeout(i2);
            this.address = InetAddress.getByName(this._GroupIP);
        } catch (IOException unused) {
        }
    }

    public void triggerOnUdpMulticast(GMulticast gMulticast) {
        try {
            HandlerUdpMulticast handlerUdpMulticast = this.handlerUdpMulticast;
            if (handlerUdpMulticast != null) {
                handlerUdpMulticast.log(gMulticast);
            }
        } catch (Exception unused) {
        }
    }

    public void start() {
        if (this.keepReceive.booleanValue()) {
            return;
        }
        this.keepReceive = true;
        final List<String> allNif = getAllNif();
        ThreadPoolUtils.run(new Runnable() {
            @Override
            public void run() {
                while (GUdpMulticast.this.keepReceive.booleanValue()) {
                    try {
                        try {
                            GUdpMulticast.this.ms.joinGroup(new InetSocketAddress(GUdpMulticast.this.address, 8161), NetworkInterface.getByName((String) allNif.get(GUdpMulticast.this.index % allNif.size())));
                            GUdpMulticast.this.dataPacket = new DatagramPacket(new byte[Message.MSG_MAX_LEN], Message.MSG_MAX_LEN);
                            if (GUdpMulticast.this.debugLog != null) {
                                GUdpMulticast.this.debugLog.receiveDebugLog("[Udp]-->" + ((String) allNif.get(GUdpMulticast.this.index % allNif.size())) + ":Receive");
                            }
                            GUdpMulticast.this.ms.receive(GUdpMulticast.this.dataPacket);
                            if (GUdpMulticast.this.dataPacket.getLength() > 0 && GUdpMulticast.this.debugLog != null) {
                                GUdpMulticast.this.debugLog.receiveDebugLog("[Udp]-->[" + new String(GUdpMulticast.this.dataPacket.getData(), "ASCII") + "]");
                            }
                            GUdpMulticast.this.triggerOnUdpMulticast(new GMulticast(new String(GUdpMulticast.this.dataPacket.getData(), "ASCII").trim()));
                            GUdpMulticast.this.ms.leaveGroup(GUdpMulticast.this.address);
                        } catch (IOException unused) {
                        }
                    } catch (Exception unused2) {
                        GUdpMulticast.this.ms.leaveGroup(GUdpMulticast.this.address);
                        if (GUdpMulticast.this.debugLog != null) {
                            GUdpMulticast.this.debugLog.receiveDebugLog("[Udp]-->Next network adapter");
                        }
                    }
                    GUdpMulticast.access$208(GUdpMulticast.this);
                }
            }
        });
    }

    public void close() {
        this.keepReceive = false;
        this.ms.close();
    }

    private List<String> getAllNif() {
        ArrayList arrayList = new ArrayList();
        try {
            Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
            while (networkInterfaces.hasMoreElements()) {
                NetworkInterface nextElement = networkInterfaces.nextElement();
                Enumeration<InetAddress> inetAddresses = nextElement.getInetAddresses();
                while (inetAddresses.hasMoreElements()) {
                    InetAddress nextElement2 = inetAddresses.nextElement();
                    if ((nextElement2 instanceof Inet4Address) && !nextElement2.getHostAddress().equals("127.0.0.1")) {
                        arrayList.add(nextElement.getName());
                    }
                }
            }
        } catch (Exception unused) {
        }
        return arrayList;
    }
}