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