code: void handleRequest(AbstractModbusTransport transport, AbstractModbusListener listener) throws ModbusIOException {
  
          // Get the request from the transport. It will be processed
          // using an associated process image
  
          if (transport == null) {
              throw new ModbusIOException("No transport specified");
          }
          ModbusRequest request = transport.readRequest(listener);
          if (request == null) {
              throw new ModbusIOException("Request for transport %s is invalid (null)", transport.getClass().getSimpleName());
          }
          ModbusResponse response;
  
          // Test if Process image exists for this Unit ID
          ProcessImage spi = getProcessImage(request.getUnitID());
          if (spi == null) {
              response = request.createExceptionResponse(Modbus.ILLEGAL_ADDRESS_EXCEPTION);
              response.setAuxiliaryType(ModbusResponse.AuxiliaryMessageTypes.UNIT_ID_MISSMATCH);
          }
          else {
              response = request.createResponse(this);
          }
  
          if (logger.isDebugEnabled()) {
              logger.debug("Request:{}", request.getHexMessage());
  
              if (transport instanceof ModbusRTUTransport && response.getAuxiliaryType() == AuxiliaryMessageTypes.UNIT_ID_MISSMATCH) {
                  logger.debug("Not sending response because it was not meant for us.");
              }
              else {
                  logger.debug("Response:{}", response.getHexMessage());
              }
          }
  
          // Write the response
          transport.writeResponse(response);
      }
docs: Reads the request, checks it is valid and that the unit ID is ok
  and sends back a response
  
  @param transport Transport to read request from
  @param listener  Listener that the request was received by
  @throws ModbusIOException If there is an issue with the transport or transmission