43 import java.nio.channels.*;
44 import java.security.*;
45 import javax.net.ssl.*;
58 ServerSocketChannel
ssc;
61 static private int PORT = 8000;
63 static private boolean SECURE =
false;
66 boolean secure)
throws Exception {
72 ssc = ServerSocketChannel.open();
73 ssc.socket().setReuseAddress(
true);
74 ssc.socket().bind(
new InetSocketAddress(port), backlog);
84 char[] passphrase =
"passphrase".toCharArray();
86 KeyStore ks = KeyStore.getInstance(
"JKS");
87 ks.load(
new FileInputStream(
"testkeys"), passphrase);
89 KeyManagerFactory kmf = KeyManagerFactory.getInstance(
"SunX509");
90 kmf.init(ks, passphrase);
92 TrustManagerFactory tmf = TrustManagerFactory.getInstance(
"SunX509");
96 sslContext.init(kmf.getKeyManagers(), tmf.getTrustManagers(),
null);
99 abstract void runServer() throws Exception;
103 "Usage: Server <type> [options]\n"
105 +
" B1 Blocking/Single-threaded Server\n"
106 +
" BN Blocking/Multi-threaded Server\n"
107 +
" BP Blocking/Pooled-Thread Server\n"
108 +
" N1 Nonblocking/Single-threaded Server\n"
109 +
" N2 Nonblocking/Dual-threaded Server\n"
112 +
" -port port port number\n"
113 +
" default: " +
PORT +
"\n"
114 +
" -backlog backlog backlog\n"
115 +
" default: " +
BACKLOG +
"\n"
116 +
" -secure encrypt with SSL/TLS");
125 if (args.length < 1) {
133 for (
int i = 1; i < args.length; i++) {
134 if (args[i].equals(
"-port")) {
136 port = Integer.valueOf(args[++i]);
137 }
else if (args[i].equals(
"-backlog")) {
139 backlog = Integer.valueOf(args[++i]);
140 }
else if (args[i].equals(
"-secure")) {
149 if (args[0].equals(
"B1")) {
150 server =
new B1(port, backlog, secure);
151 }
else if (args[0].equals(
"BN")) {
152 server =
new BN(port, backlog, secure);
153 }
else if (args[0].equals(
"BP")) {
154 server =
new BP(port, backlog, secure);
155 }
else if (args[0].equals(
"N1")) {
156 server =
new N1(port, backlog, secure);
157 }
else if (args[0].equals(
"N2")) {
158 server =
new N2(port, backlog, secure);
165 if ((i + 1) >= len) {
170 static public void main(String args[])
throws Exception {
177 System.out.println(
"Server started.");