| | |
| | |
|
| | | /**
|
| | | * 初始化参数
|
| | | * @param ipAddress 本地监听端口
|
| | | * @param port 本地监听端口
|
| | | *
|
| | | * @param ipAddress 本地监听端口
|
| | | * @param port 本地监听端口
|
| | | * @param socketOptions
|
| | | */
|
| | | public UdpClient(String ipAddress, int port, UdpSocketOptions socketOptions) {
|
| | |
| | | this.socketOptions = socketOptions;
|
| | | byte[] receiveByte = new byte[BUFFER];
|
| | | receivePacket = new DatagramPacket(receiveByte, receiveByte.length);
|
| | | this.lock= socketOptions.getWifiManager().createMulticastLock("UDPwifi");
|
| | | this.lock = socketOptions.getWifiManager().createMulticastLock("UDPwifi");
|
| | | }
|
| | |
|
| | | /**
|
| | | * 初始化参数
|
| | | *
|
| | | * @param ipAddress 本地监听IP地址
|
| | | * @param port 本地监听端口
|
| | | * @param port 本地监听端口
|
| | | * @param options
|
| | | * @return
|
| | | */
|
| | |
| | |
|
| | | /**
|
| | | * 初始化参数
|
| | | * @param port 本地监听端口
|
| | | *
|
| | | * @param port 本地监听端口
|
| | | * @param options
|
| | | * @return
|
| | | */
|
| | |
| | |
|
| | | lock.acquire();
|
| | | if (TextUtils.isEmpty(ipAddress)) {
|
| | | mSocket = SocketPool.getInstance().getUdpSocket(new InetSocketAddress( port));
|
| | | }
|
| | | else{
|
| | | mSocket = SocketPool.getInstance().getUdpSocket(new InetSocketAddress(port));
|
| | | } else {
|
| | | mSocket = SocketPool.getInstance().getUdpSocket(new InetSocketAddress(Inet4Address.getByName(ipAddress), port));
|
| | | }
|
| | | mSocket.joinGroup(InetAddress.getByName(socketOptions.getGroupAddress()));
|
| | | //去掉 组地址(光伏app不同网段不允许) 2025年04月01日15:43:58
|
| | | // mSocket.joinGroup(InetAddress.getByName(socketOptions.getGroupAddress()));
|
| | | mSocket.setSoTimeout(socketOptions.getSoTimeOut());
|
| | | mSocket.setBroadcast(true);
|
| | | // mSocket.setReuseAddress(true);
|
| | |
| | | byte[] data = new byte[receivePacket.getLength()];
|
| | | System.arraycopy(receivePacket.getData(), 0, data, 0, data.length);
|
| | |
|
| | | if(mSocket.getLocalPort()== HDLBusProConnect.UDP_PORT){
|
| | | if (mSocket.getLocalPort() == HDLBusProConnect.UDP_PORT) {
|
| | | //Bus协议,本身没有主题,默认用上报的主题,方便bus解析器能订阅收到数据
|
| | | LinkPacket linkPacket=new LinkPacket(String.format(TopicConstant.NATIVE_BUSPRO_UP, receivePacket.getAddress().getHostAddress()), data);
|
| | | LinkPacket linkPacket = new LinkPacket(String.format(TopicConstant.NATIVE_BUSPRO_UP, receivePacket.getAddress().getHostAddress()), data);
|
| | | linkPacket.setNativeType(NativeType.BusPro);
|
| | | QueueUtils.getInstance().add(linkPacket);
|
| | | }
|
| | | else {
|
| | | } else {
|
| | | //link协议
|
| | | socketOptions.getHandleMessage().read(new Packet(data));
|
| | | }
|
| | |
| | |
|
| | |
|
| | | @Override
|
| | | public void sendMsg(String ipAddress,int port, byte[] msg) throws Exception {
|
| | | public void sendMsg(String ipAddress, int port, byte[] msg) throws Exception {
|
| | | if (msg == null) {
|
| | | return;
|
| | | }
|
| | |
| | | // if (mSocket != null) {
|
| | | // mSocket.send(sendPacket);
|
| | | // } else {
|
| | | DatagramSocket datagramSocket = new DatagramSocket();
|
| | | datagramSocket.setBroadcast(true);
|
| | | datagramSocket.send(sendPacket);
|
| | | datagramSocket.close();
|
| | | DatagramSocket datagramSocket = new DatagramSocket();
|
| | | datagramSocket.setBroadcast(true);
|
| | | datagramSocket.send(sendPacket);
|
| | | datagramSocket.close();
|
| | | // sendPacket = new DatagramPacket(msg, msg.length, InetAddress.getByName(socketOptions.getGroupAddress()), port);
|
| | | // MulticastSocket multicastSocket = new MulticastSocket();
|
| | | // multicastSocket.setReuseAddress(true);
|