2012-05-25 4 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

연결을 수락하기위한 소켓과 (hostname, 8888)에 연결하기위한 소켓 두 개를 생성했습니다. 실제로 클라이언트를 연결하려면 서버 소켓에서 accept()으로 전화해야합니다. tutorial을 참조하십시오.

1

Socket client = server.accept();으로 시작하십시오. 그런 다음 나머지 프로그램을 어떻게 재구성해야하는지 알 수 있습니다.

관련 문제