1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.jboss.netty.example.objectecho;
17
18 import java.net.InetSocketAddress;
19 import java.util.concurrent.Executors;
20
21 import org.jboss.netty.bootstrap.ClientBootstrap;
22 import org.jboss.netty.channel.ChannelPipeline;
23 import org.jboss.netty.channel.ChannelPipelineFactory;
24 import org.jboss.netty.channel.Channels;
25 import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory;
26 import org.jboss.netty.example.echo.EchoClient;
27 import org.jboss.netty.handler.codec.serialization.ClassResolvers;
28 import org.jboss.netty.handler.codec.serialization.ObjectDecoder;
29 import org.jboss.netty.handler.codec.serialization.ObjectEncoder;
30
31
32
33
34 public class ObjectEchoClient {
35
36 private final String host;
37 private final int port;
38 private final int firstMessageSize;
39
40 public ObjectEchoClient(String host, int port, int firstMessageSize) {
41 this.host = host;
42 this.port = port;
43 this.firstMessageSize = firstMessageSize;
44 }
45
46 public void run() {
47
48 ClientBootstrap bootstrap = new ClientBootstrap(
49 new NioClientSocketChannelFactory(
50 Executors.newCachedThreadPool(),
51 Executors.newCachedThreadPool()));
52
53
54 bootstrap.setPipelineFactory(new ChannelPipelineFactory() {
55 public ChannelPipeline getPipeline() throws Exception {
56 return Channels.pipeline(
57 new ObjectEncoder(),
58 new ObjectDecoder(
59 ClassResolvers.cacheDisabled(getClass().getClassLoader())),
60 new ObjectEchoClientHandler(firstMessageSize));
61 }
62 });
63
64
65 bootstrap.connect(new InetSocketAddress(host, port));
66 }
67
68 public static void main(String[] args) throws Exception {
69
70 if (args.length < 2 || args.length > 3) {
71 System.err.println(
72 "Usage: " + ObjectEchoClient.class.getSimpleName() +
73 " <host> <port> [<first message size>]");
74 return;
75 }
76
77
78 final String host = args[0];
79 final int port = Integer.parseInt(args[1]);
80 final int firstMessageSize;
81
82 if (args.length == 3) {
83 firstMessageSize = Integer.parseInt(args[2]);
84 } else {
85 firstMessageSize = 256;
86 }
87
88 new ObjectEchoClient(host, port, firstMessageSize).run();
89 }
90 }