<< (8)刘良华家庭教育100条建议_教育现象学_新浪博客 | 首页 | How To: Make Sure /etc/resolv.conf Never Get Updated By DHCP Client >>

netty/MemcacheClient.java at master · netty/netty · GitHub

/*
  * Copyright 2014 The Netty Project
  *
  * The Netty Project licenses this file to you under the Apache License,
  * version 2.0 (the "License"); you may not use this file except in compliance
  * with the License. You may obtain a copy of the License at:
  *
  * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  * License for the specific language governing permissions and limitations
  * under the License.
  */
  package io.netty.example.memcache.binary;
   
  import io.netty.bootstrap.Bootstrap;
  import io.netty.channel.Channel;
  import io.netty.channel.ChannelFuture;
  import io.netty.channel.ChannelInitializer;
  import io.netty.channel.ChannelPipeline;
  import io.netty.channel.EventLoopGroup;
  import io.netty.channel.nio.NioEventLoopGroup;
  import io.netty.channel.socket.SocketChannel;
  import io.netty.channel.socket.nio.NioSocketChannel;
  import io.netty.handler.codec.memcache.binary.BinaryMemcacheClientCodec;
  import io.netty.handler.codec.memcache.binary.BinaryMemcacheObjectAggregator;
  import io.netty.handler.ssl.SslContext;
  import io.netty.handler.ssl.SslContextBuilder;
  import io.netty.handler.ssl.util.InsecureTrustManagerFactory;
   
  import java.io.BufferedReader;
  import java.io.InputStreamReader;
   
  /**
  * Simple memcache client that demonstrates get and set commands against a memcache server.
  */
  public final class MemcacheClient {
   
  static final boolean SSL = System.getProperty("ssl") != null;
  static final String HOST = System.getProperty("host", "127.0.0.1");
  static final int PORT = Integer.parseInt(System.getProperty("port", "11211"));
   
  public static void main(String[] args) throws Exception {
  // Configure SSL.
  final SslContext sslCtx;
  if (SSL) {
  sslCtx = SslContextBuilder.forClient()
  .trustManager(InsecureTrustManagerFactory.INSTANCE).build();
  } else {
  sslCtx = null;
  }
   
  EventLoopGroup group = new NioEventLoopGroup();
  try {
  Bootstrap b = new Bootstrap();
  b.group(group)
  .channel(NioSocketChannel.class)
  .handler(new ChannelInitializer<SocketChannel>() {
  @Override
  protected void initChannel(SocketChannel ch) throws Exception {
  ChannelPipeline p = ch.pipeline();
  if (sslCtx != null) {
  p.addLast(sslCtx.newHandler(ch.alloc(), HOST, PORT));
  }
  p.addLast(new BinaryMemcacheClientCodec());
  p.addLast(new BinaryMemcacheObjectAggregator(Integer.MAX_VALUE));
  p.addLast(new MemcacheClientHandler());
  }
  });
   
  // Start the connection attempt.
  Channel ch = b.connect(HOST, PORT).sync().channel();
   
  // Read commands from the stdin.
  System.out.println("Enter commands (quit to end)");
  System.out.println("get <key>");
  System.out.println("set <key> <value>");
  ChannelFuture lastWriteFuture = null;
  BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
  for (;;) {
  String line = in.readLine();
  if (line == null) {
  break;
  }
  if ("quit".equals(line.toLowerCase())) {
  ch.close().sync();
  break;
  }
  // Sends the received line to the server.
  lastWriteFuture = ch.writeAndFlush(line);
  }
   
  // Wait until all messages are flushed before closing the channel.
  if (lastWriteFuture != null) {
  lastWriteFuture.sync();
  }
  } finally {
  group.shutdownGracefully();
  }
  }
  }

阅读全文……

标签 :



发表评论 发送引用通报