コード例 #1
0
  protected void setupSocketProtocol(String uri) throws Exception {
    boolean minaLogger = configuration.isMinaLogger();
    long timeout = configuration.getTimeout();
    List<IoFilter> filters = configuration.getFilters();

    address = new InetSocketAddress(configuration.getHost(), configuration.getPort());

    final int processorCount = Runtime.getRuntime().availableProcessors() + 1;
    connector = new NioSocketConnector(processorCount);

    // connector config
    connectorConfig = connector.getSessionConfig();

    if (configuration.isOrderedThreadPoolExecutor()) {
      workerPool = new OrderedThreadPoolExecutor(configuration.getMaximumPoolSize());
    } else {
      workerPool = new UnorderedThreadPoolExecutor(configuration.getMaximumPoolSize());
    }
    connector.getFilterChain().addLast("threadPool", new ExecutorFilter(workerPool));
    if (minaLogger) {
      connector.getFilterChain().addLast("logger", new LoggingFilter());
    }
    appendIoFiltersToChain(filters, connector.getFilterChain());
    if (configuration.getSslContextParameters() != null) {
      connector
          .getFilterChain()
          .addFirst(
              "sslFilter",
              new SslFilter(
                  configuration.getSslContextParameters().createSSLContext(),
                  configuration.isAutoStartTls()));
    }
    configureCodecFactory("Mina2Producer", connector);
    connector.setConnectTimeoutMillis(timeout);
  }
コード例 #2
0
  protected void setupDatagramProtocol(String uri) {
    boolean minaLogger = configuration.isMinaLogger();
    boolean transferExchange = configuration.isTransferExchange();
    List<IoFilter> filters = configuration.getFilters();

    if (transferExchange) {
      throw new IllegalArgumentException(
          "transferExchange=true is not supported for datagram protocol");
    }

    address = new InetSocketAddress(configuration.getHost(), configuration.getPort());
    final int processorCount = Runtime.getRuntime().availableProcessors() + 1;
    connector = new NioDatagramConnector(processorCount);

    if (configuration.isOrderedThreadPoolExecutor()) {
      workerPool = new OrderedThreadPoolExecutor(configuration.getMaximumPoolSize());
    } else {
      workerPool = new UnorderedThreadPoolExecutor(configuration.getMaximumPoolSize());
    }
    connectorConfig = connector.getSessionConfig();
    connector.getFilterChain().addLast("threadPool", new ExecutorFilter(workerPool));
    if (minaLogger) {
      connector.getFilterChain().addLast("logger", new LoggingFilter());
    }
    appendIoFiltersToChain(filters, connector.getFilterChain());
    if (configuration.getSslContextParameters() != null) {
      LOG.warn(
          "Using datagram protocol, "
              + configuration.getProtocol()
              + ", but an SSLContextParameters instance was provided.  SSLContextParameters is only supported on the TCP protocol.");
    }
    configureDataGramCodecFactory("Mina2Producer", connector, configuration);
    // set connect timeout to mina in seconds
    connector.setConnectTimeoutMillis(timeout);
  }
コード例 #3
0
  // Implementation methods
  // -------------------------------------------------------------------------
  protected void setupVmProtocol(String uri) {
    boolean minaLogger = configuration.isMinaLogger();
    List<IoFilter> filters = configuration.getFilters();

    address = new VmPipeAddress(configuration.getPort());
    connector = new VmPipeConnector();

    // connector config
    if (minaLogger) {
      connector.getFilterChain().addLast("logger", new LoggingFilter());
    }
    appendIoFiltersToChain(filters, connector.getFilterChain());
    if (configuration.getSslContextParameters() != null) {
      LOG.warn(
          "Using vm protocol"
              + ", but an SSLContextParameters instance was provided.  SSLContextParameters is only supported on the TCP protocol.");
    }
    configureCodecFactory("Mina2Producer", connector);
  }
コード例 #4
0
 private void init() {
   connector = new NioSocketConnector();
   connector.setConnectTimeoutMillis(15000);
   connector.setHandler(this);
   JsonProtocalCodecFactory factory = new JsonProtocalCodecFactory(Charset.forName("UTF-8"));
   connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(factory));
   ConnectFuture connectFuture = connector.connect(new InetSocketAddress(host, port));
   connectFuture.awaitUninterruptibly(); // 同步,等待,直到连接完成
   if (connectFuture.isDone()) {
     if (!connectFuture.isConnected()) { // 若在指定时间内没连接成功,则抛出异常
       connector.dispose(); // 不关闭的话会运行一段时间后抛出,too many open
       connector = null;
     }
   }
   lastTime = System.currentTimeMillis();
 }
コード例 #5
0
  public static void main(String[] args) {
    StringBuffer sb = new StringBuffer();
    // TEARDOWN
    sb.append("TEARDOWN rtsp://192.168.14.14/ RTSP/1.0\r\n");
    sb.append("CSeq: 5\r\n");
    sb.append("Session: 1330505201\r\n");
    sb.append("Connection: close\r\n");
    sb.append("\r\n");

    logger.debug(sb.toString());

    IoConnector connector = new NioSocketConnector();
    connector.setConnectTimeoutMillis(30000);
    ProtocolCodecFilter myFilter = new ProtocolCodecFilter(new MessageCodecFactory());
    connector.getFilterChain().addLast("codec", myFilter);

    connector.setHandler(new ClientHandler(sb.toString()));

    connector.connect(new InetSocketAddress("192.168.14.14", 554));
  }
コード例 #6
0
  public static void main(String[] args) {
    StringBuffer sb = new StringBuffer();
    // PAUSE
    sb.append("PLAY rtsp://192.168.14.14/NovelSupertv:BAAA0000000000018389 RTSP/1.0\r\n");
    sb.append("CSeq: 3\r\n");
    sb.append("Range: npt=beginning-\r\n");
    sb.append("Scale: 1.000000\r\n");
    sb.append("Session: 1330505200\r\n");
    sb.append("Require:com.comcase.ngod.r2\r\n");
    sb.append("User-Agent: Dilife 20090303\r\n");
    sb.append("\r\n");

    logger.debug(sb.toString());

    IoConnector connector = new NioSocketConnector();
    connector.setConnectTimeoutMillis(30000);
    ProtocolCodecFilter myFilter = new ProtocolCodecFilter(new MessageCodecFactory());
    connector.getFilterChain().addLast("codec", myFilter);

    connector.setHandler(new ClientHandler(sb.toString()));

    connector.connect(new InetSocketAddress("192.168.14.14", 554));
  }
コード例 #7
0
  public static void main(String[] args) {
    // 创建一个非阻塞的客户端程序
    IoConnector connector = new NioSocketConnector();
    // 设置链接超时时间
    connector.setConnectTimeout(30000);
    // 设置过滤器
    connector
        .getFilterChain()
        .addLast(
            "codec",
            new ProtocolCodecFilter(
                new TextLineCodecFactory(
                    Charset.forName("UTF-8"),
                    LineDelimiter.WINDOWS.getValue(),
                    LineDelimiter.WINDOWS.getValue())));

    // 添加业务逻辑处理器类
    connector.setHandler(new Demo1ClientHandler());
    IoSession session = null;
    try {
      ConnectFuture future = connector.connect(new InetSocketAddress(HOST, PORT)); // 创建连接
      future.awaitUninterruptibly(); // 等待连接创建完成
      session = future.getSession(); // 获得session

      String sendPhone = "13681803609"; // 当前发送人的手机号码
      String receivePhone = "13721427169"; // 接收人手机号码
      String message = "测试发送短信,这个是短信信息哦,当然长度是有限制的哦....";
      String msg = sendPhone + ";" + receivePhone + ";" + message;

      session.write(msg); // 发送给移动服务端
    } catch (Exception e) {
      logger.error("客户端链接异常...", e);
    }

    session.getCloseFuture().awaitUninterruptibly(); // 等待连接断开
    connector.dispose();
  }
コード例 #8
0
 public DefaultIoFilterChainBuilder getFilterChain() {
   return connector.getFilterChain();
 }
コード例 #9
0
 /**
  * Crea un nuevo conector para la conexión saliente por socket
  *
  * @return El conector del nuevo socket
  */
 protected IoConnector newIoConnector() {
   final IoConnector ioConnector = componentsFactory.createIoConnector();
   final DefaultIoFilterChainBuilder filterChain = ioConnector.getFilterChain();
   configureFilterChain(filterChain);
   return ioConnector;
 }