1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.jboss.netty.example.proxy;
17
18 import java.net.InetSocketAddress;
19 import java.util.concurrent.Executor;
20 import java.util.concurrent.Executors;
21
22 import org.jboss.netty.bootstrap.ServerBootstrap;
23 import org.jboss.netty.channel.socket.ClientSocketChannelFactory;
24 import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory;
25 import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory;
26
27
28
29
30
31
32 public class HexDumpProxy {
33
34 public static void main(String[] args) throws Exception {
35
36 if (args.length != 3) {
37 System.err.println(
38 "Usage: " + HexDumpProxy.class.getSimpleName() +
39 " <local port> <remote host> <remote port>");
40 return;
41 }
42
43
44 int localPort = Integer.parseInt(args[0]);
45 String remoteHost = args[1];
46 int remotePort = Integer.parseInt(args[2]);
47
48 System.err.println(
49 "Proxying *:" + localPort + " to " +
50 remoteHost + ':' + remotePort + " ...");
51
52
53 Executor executor = Executors.newCachedThreadPool();
54 ServerBootstrap sb = new ServerBootstrap(
55 new NioServerSocketChannelFactory(executor, executor));
56
57
58 ClientSocketChannelFactory cf =
59 new NioClientSocketChannelFactory(executor, executor);
60
61 sb.setPipelineFactory(
62 new HexDumpProxyPipelineFactory(cf, remoteHost, remotePort));
63
64
65 sb.bind(new InetSocketAddress(localPort));
66 }
67 }