public class ClientTest { private static final int PORT = 8009; private static final int TIMEOUT = 2000; Server server; Thread serverThread; @Before public void createServer() throws Exception { try { server = new Server(PORT, TIMEOUT); serverThread = new Thread(server); serverThread.start(); } catch (Exception e) { e.printStackTrace(); throw e; } } @After public void shutdownServer() throws InterruptedException { if (server != null) { server.stopProcessing(); serverThread.join(); } } class TrivialClient implements Runnable { int clientNumber; TrivialClient(int clientNumber) { this.clientNumber = clientNumber; } public void run() { try { connectSendReceive(clientNumber); } catch (IOException e) { e.printStackTrace(); } } } @Test(timeout = 10000) public void shouldRunInUnder10Seconds() throws Exception { Thread[] threads = new Thread[10]; for (int i = 0; i < threads.length; ++i) { threads[i] = new Thread(new TrivialClient(i)); threads[i].start(); } for (int i = 0; i < threads.length; ++i) { threads[i].join(); } } private void connectSendReceive(int i) throws IOException { System.out.printf("Client %2d: connecting\n", i); Socket socket = new Socket("localhost", PORT); System.out.printf("Client %2d: sending message\n", i); MessageUtils.sendMessage(socket, Integer.toString(i)); System.out.printf("Client %2d: getting reply\n", i); MessageUtils.getMessage(socket); System.out.printf("Client %2d: finished\n", i); socket.close(); } }
以上是我在閱讀時發現這段Code內容有誤後,寫信反應給出版社 ,然後主編就更正這內容給我
,相信不久就會在出版社網站更新,先貼出來給需要的讀者。
PS. 感謝陳主編