package com.sunvote.udptest; import java.net.DatagramSocket; import java.net.SocketAddress; /** * Created by Elvis on 2017/8/8. * Email:Eluis@psunsky.com * Description: * 本地UDP提供类 */ public class LocalUDPSocketProvider { private final static String TAG = LocalUDPSocketProvider.class.getSimpleName(); private static LocalUDPSocketProvider instance = null; private DatagramSocket localUDPSocket = null; public static LocalUDPSocketProvider getInstance() { if (instance == null) instance = new LocalUDPSocketProvider(); return instance; } private LocalUDPSocketProvider() { // } public DatagramSocket resetLocalUDPSocket() { try { closeLocalUDPSocket(); localUDPSocket = new DatagramSocket(Main2Activity.port);//_Utils.LOCAL_UDP_SEND$LISTENING_PORT); //Config.getInstance().localUDPPort localUDPSocket.setReuseAddress(true); localUDPSocket.setSoTimeout(60 * 10000); return localUDPSocket; } catch (Exception e) { closeLocalUDPSocket(); return null; } } private boolean isLocalUDPSocketReady() { boolean ret = true; if(localUDPSocket != null) { SocketAddress socketAddress = localUDPSocket.getRemoteSocketAddress(); if (socketAddress != null) { if(!"".equals(Main2Activity.ip)){ ret = socketAddress.toString().contains(Main2Activity.ip); } } return ret && !localUDPSocket.isClosed(); } return false; } public DatagramSocket getLocalUDPSocket() { if (isLocalUDPSocketReady()) { return localUDPSocket; } else { return resetLocalUDPSocket(); } } public void closeLocalUDPSocket() { try { if (localUDPSocket != null) { localUDPSocket.close(); localUDPSocket = null; } else { } } catch (Exception e) { } } }