1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.mina.example.tcp.perf;
21
22 import java.io.IOException;
23 import java.net.InetSocketAddress;
24 import java.util.concurrent.atomic.AtomicInteger;
25
26 import org.apache.mina.core.service.IoHandlerAdapter;
27 import org.apache.mina.core.session.IdleStatus;
28 import org.apache.mina.core.session.IoSession;
29 import org.apache.mina.transport.socket.SocketSessionConfig;
30 import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
31
32
33
34
35
36
37
38
39
40 public class TcpServer extends IoHandlerAdapter {
41
42 public static final int PORT = 18567;
43
44
45 public static final int MAX_RECEIVED = 100000;
46
47
48 private static long t0;
49
50
51 private AtomicInteger nbReceived = new AtomicInteger(0);
52
53
54
55
56 @Override
57 public void exceptionCaught(IoSession session, Throwable cause) throws Exception {
58 cause.printStackTrace();
59 session.close(true);
60 }
61
62
63
64
65 @Override
66 public void messageReceived(IoSession session, Object message) throws Exception {
67
68 int nb = nbReceived.incrementAndGet();
69
70 if (nb == 1) {
71 t0 = System.currentTimeMillis();
72 }
73
74 if (nb == MAX_RECEIVED) {
75 long t1 = System.currentTimeMillis();
76 System.out.println("-------------> end " + (t1 - t0));
77 }
78
79 if (nb % 10000 == 0) {
80 System.out.println("Received " + nb + " messages");
81 }
82
83
84
85
86
87
88 session.write(message);
89 }
90
91
92
93
94 @Override
95 public void sessionClosed(IoSession session) throws Exception {
96 System.out.println("Session closed...");
97
98
99 System.out.println("Nb message received : " + nbReceived.get());
100 nbReceived.set(0);
101 }
102
103
104
105
106 @Override
107 public void sessionCreated(IoSession session) throws Exception {
108 System.out.println("Session created...");
109 }
110
111
112
113
114 @Override
115 public void sessionIdle(IoSession session, IdleStatus status) throws Exception {
116 System.out.println("Session idle...");
117 }
118
119
120
121
122 @Override
123 public void sessionOpened(IoSession session) throws Exception {
124 System.out.println("Session Opened...");
125 }
126
127
128
129
130 public TcpServer() throws IOException {
131 NioSocketAcceptor acceptor = new NioSocketAcceptor();
132 acceptor.setHandler(this);
133
134
135
136
137
138 SocketSessionConfig scfg = acceptor.getSessionConfig();
139
140 acceptor.bind(new InetSocketAddress(PORT));
141
142 System.out.println("Server started...");
143 }
144
145
146
147
148 public static void main(String[] args) throws IOException {
149 new TcpServer();
150 }
151 }