2012-05-25 5 views
1

Невозможность чтения/записи данных в сокет при попытке запустить эхо-сервер. Никакое исключение не выбрасывается, и на консольный ввод нет ответа. Что не так в коде?Не удается получить данные из InputStream сокета

public class Server { 

    static ServerSocket server; 

    public static void main(String[] args) throws IOException { 
     String hostname = "127.0.0.1"; 

     try{ 
      server = new ServerSocket(8888); 
      } catch (IOException e) { 
      System.out.println("Could not listen on port 8888"); 
      System.exit(-1); 
      } 

     Socket theSocket = null; 
     try { 
      theSocket = new Socket(hostname, 8888); 

      BufferedReader networkIn = new BufferedReader(new InputStreamReader(theSocket.getInputStream())); 
      BufferedReader userIn = new BufferedReader(new InputStreamReader(System.in)); 
      PrintWriter out = new PrintWriter(theSocket.getOutputStream(), true); 
      System.out.println("Connected to echo server"); 

      while (true) { 
       String theLine = userIn.readLine(); 
       if (theLine.equals(".")) 
       break; 
       out.println(theLine); 
       out.flush(); 
       System.out.println("networkIn: "+networkIn.readLine()); 
      } 
      networkIn.close(); 
      out.close(); 
      System.out.println("out.close();"); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 


    } 
} 

ответ

3

Вы создали два несвязанных сокетов, один для приема соединений и один для подключения к (имя хоста, 8888). Вам нужно позвонить accept() на серверный сокет, чтобы на самом деле подключить клиентов. См. tutorial.

1

Начните с добавления Socket client = server.accept();. Затем вы увидите, как вам нужно реструктурировать остальную часть вашей программы.

Смежные вопросы