ByteServer.java revision 2485:8a4557c5dfa1
1221888Sadrian/*
2221888Sadrian * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
3221888Sadrian * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4221888Sadrian *
5221888Sadrian * This code is free software; you can redistribute it and/or modify it
6221888Sadrian * under the terms of the GNU General Public License version 2 only, as
7221888Sadrian * published by the Free Software Foundation.
8221888Sadrian *
9221888Sadrian * This code is distributed in the hope that it will be useful, but WITHOUT
10221888Sadrian * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11221888Sadrian * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12221888Sadrian * version 2 for more details (a copy is included in the LICENSE file that
13221888Sadrian * accompanied this code).
14221888Sadrian *
15221888Sadrian * You should have received a copy of the GNU General Public License version
16221888Sadrian * 2 along with this work; if not, write to the Free Software Foundation,
17221888Sadrian * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18221888Sadrian *
19221888Sadrian * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20221888Sadrian * or visit www.oracle.com if you need additional information or have any
21221888Sadrian * questions.
22221888Sadrian */
23221888Sadrian
24221888Sadrian/**
25221888Sadrian *
26221888Sadrian * Utility class for tests. A simple server, which waits for a connection,
27221888Sadrian * writes out n bytes and waits.
28221888Sadrian * @author kladko
29221888Sadrian */
30221888Sadrian
31221888Sadrianimport java.net.Socket;
32221888Sadrianimport java.net.ServerSocket;
33221888Sadrian
34223615Sadrianpublic class ByteServer {
35223615Sadrian
36221888Sadrian    public static final String LOCALHOST = "localhost";
37221888Sadrian    private int bytecount;
38221888Sadrian    private Socket  socket;
39221888Sadrian    private ServerSocket  serversocket;
40221888Sadrian    private Thread serverthread;
41221888Sadrian    volatile Exception savedException;
42221888Sadrian
43221888Sadrian    public ByteServer(int bytecount) throws Exception{
44221888Sadrian        this.bytecount = bytecount;
45221888Sadrian        serversocket = new ServerSocket(0);
46221888Sadrian    }
47221888Sadrian
48221888Sadrian    public int port() {
49221888Sadrian        return serversocket.getLocalPort();
50221888Sadrian    }
51221888Sadrian
52221888Sadrian    public void start() {
53221888Sadrian        serverthread = new Thread() {
54221888Sadrian            public void run() {
55221888Sadrian                try {
56221888Sadrian                    socket = serversocket.accept();
57221888Sadrian                    socket.getOutputStream().write(new byte[bytecount]);
58221888Sadrian                    socket.getOutputStream().flush();
59221888Sadrian                } catch (Exception e) {
60221888Sadrian                    System.err.println("Exception in ByteServer: " + e);
61221888Sadrian                    System.exit(1);
62221888Sadrian                }
63221888Sadrian            }
64221888Sadrian        };
65221888Sadrian        serverthread.start();
66221888Sadrian    }
67221888Sadrian
68221888Sadrian    public void exit() throws Exception {
69221888Sadrian        serverthread.join();
70221888Sadrian        socket.close();
71221888Sadrian        serversocket.close();
72221888Sadrian    }
73221888Sadrian}
74221888Sadrian