2014-12-01 2 views
0

стороне клиента код является Side кодКогда я бегу клиент первый раз это сервер показывает выход ... второй раз, когда я бегу клиент, сервер не не показывает выходной

try { 
    URL url=new URL("http://127.0.0.1:7655"); 
    HttpURLConnection connection=(HttpURLConnection) url.openConnection(); 
    connection.setDoOutput(true); 
    connection.connect(); 
    PrintWriter writer = new PrintWriter(connection.getOutputStream()); 
    writer.println("Hello"); 

    writer.flush(); 
    writer.close(); 
    connection.getResponseCode(); 
    connection.disconnect(); 
} catch (UnknownHostException e) { 
    System.err.println("Don't know about host: hostname"); 
} catch (IOException e) { 
    System.err.println("Couldn't get I/O for the connection to: hostname"); 
} 

Сервер

public static void main(String args[]) throws IOException { 
    ServerSocket echoServer = null; 
    String line; 
    DataInputStream is = null; 
    Socket clientSocket = null; 

    try { 
     echoServer = new ServerSocket(7655); 
     clientSocket = echoServer.accept(); 
     while (true) { 
      is = new DataInputStream(clientSocket.getInputStream());   
      System.out.println("inside"); 
      line = is.readLine(); 
      System.out.println(line); 
     } 
    }catch (IOException e) { 
     System.out.println(e); 
    }finally{ 
     is.close(); 
     clientSocket.close(); 
    } 
} 

Когда я запускаю клиента в первый раз, сервер показывает результат ... второй раз, когда я запускаю клиент, сервер не показывает вывод. Есть ли ошибка в коде?

Если я не передаю «Connection.getResponseCode» на стороне сервера, он получает null и показывает null на консоли. Почему это необходимо?

ответ

0

Ваш код точно спроектирован таким образом. Вам нужно использовать многопоточность на стороне сервера в потоке, которое принимает все соединения, а другое - поток данных DataInputStream.

Как я это сделал ... У меня есть класс, сам по себе с геттерами и сеттерами, и используется только для информации или массивов, необходимых между потоками. И в вашем основном запуске 2 потока, которые будут всегда принимать соединения и читать все подключения.