public void run() { do { try { // 1. pickup the message and corresponding request byte[] message = (byte[]) m_SendQueue.take(); DatagramPacket req = (DatagramPacket) m_Requests.remove(new Integer(ModbusUtil.registersToInt(message))); // 2. create new Package with corresponding address and port DatagramPacket res = new DatagramPacket(message, message.length, req.getAddress(), req.getPort()); m_Socket.send(res); if (Modbus.debug) System.out.println("Sent package from queue."); } catch (Exception ex) { ex.printStackTrace(); } } while (m_Continue || !m_SendQueue.isEmpty()); } // run
public void run() { do { try { // 1. Prepare buffer and receive package byte[] buffer = new byte[256]; // max size DatagramPacket packet = new DatagramPacket(buffer, buffer.length); m_Socket.receive(packet); // 2. Extract TID and remember request Integer tid = new Integer(ModbusUtil.registersToInt(buffer)); m_Requests.put(tid, packet); // 3. place the data buffer in the queue m_ReceiveQueue.put(buffer); if (Modbus.debug) System.out.println("Received package to queue."); } catch (Exception ex) { ex.printStackTrace(); } } while (m_Continue); }