1   package ch.qos.logback.classic.net;
2   
3   import java.io.InputStream;
4   import java.net.ServerSocket;
5   import java.net.Socket;
6   import java.util.ArrayList;
7   import java.util.List;
8   
9   public class ExternalMockSocketServer {
10  
11  	static final String LOGGINGEVENT = "LoggingEvent";
12  	static final String LOGGINGEVENT2 = "LoggingEvent2";
13  	static final String MINIMALEXT = "MinimalExt";
14  	static final String MINIMALSER = "MinimalSer";
15  
16  	static final int PORT = 4560;
17  
18  	//static int loopLen;
19  	static int clientNumber;
20  
21  	static List<String> msgList = new ArrayList<String>();
22  	static boolean finished = false;
23  
24  	String className = LOGGINGEVENT;
25  
26  	public static void main(String[] args) {
27  		if (args.length == 1) {
28  			clientNumber = Integer.parseInt(args[0]);
29  			//loopLen = Integer.parseInt((args[1]));
30  			runServer();
31  		} else {
32  			usage("Wrong number of arguments.");
33  		}
34  	}
35  
36  	static void usage(String msg) {
37  		System.err.println(msg);
38  		System.err
39  				.println("Usage: java " + ExternalMockSocketServer.class.getName()
40  						+ " loopNumber");
41  		System.exit(1);
42  	}
43  
44  	static void runServer() {
45  
46  		try {
47  			System.out.println("Starting Server...");
48  			ServerSocket serverSocket = new ServerSocket(PORT);
49  			System.out.println("Listening on port " + PORT);
50  			for (int j = 0; j < clientNumber; j++) {
51  				Socket socket = serverSocket.accept();
52  				System.out.println("New client accepted.");
53  				System.out.println("Connected to client at " + socket.getInetAddress());
54  
55  				InputStream is = socket.getInputStream();
56  				long sum = 0;
57  			
58  				while (true) {
59  					// this call is blocking
60  					int val = is.read();
61  					if(val == -1) {
62  						break;
63  					}
64  					// if a byte is available, we skip it.
65  					// this allows to pass all available bytes in a quick manner.
66  					int a = is.available();
67  					sum += a + 1;
68  					is.skip(a);
69  				}
70  			  System.out.println(sum/1000 + " KB");
71  			}
72  			serverSocket.close();
73  		} catch (Exception se) {
74  			se.printStackTrace();
75  		}
76  		System.out.println("Server finished.");
77  		finished = true;
78  	}
79  
80  }