2013-08-13 1 views
0

코드를 작업 표준 스트림에 쓰기 : 내가 입력을 보낼 수 있습니다자바 읽고하지

[email protected][~]$ cat irc.java 
import java.net.*; 
import java.io.*; 

class irc 
{ 
    static Socket server; 
    static BufferedReader in; 
    static BufferedReader stdin; 
    static PrintWriter out; 

    public static void main(String args[]) 
    { 
      String user_line; 
      try 
      { 
        server = new Socket(args[0], 6667); 
        in = new BufferedReader(newInputStreamReader(server.getInputStream())); 
        stdin = new BufferedReader(newInputStreamReader(System.in)); 
        out = new PrintWriter(server.getOutputStream()); 
      } 
      catch (UnknownHostException e) {} 
      catch (IOException e) {} 
      irc_in input = new irc_in(server, out, stdin); 
      Thread t = new Thread(input); 
      t.run(); 
      while (true) 
      { 
        try { 
          System.out.println(in.readLine()); 
          System.out.flush(); 
          Thread.sleep(2000); 
        } catch (IOException e) {} 
         catch (InterruptedException e) {} 
      } 
    } 
} 

class irc_in implements Runnable 
{ 
    static Socket server; 
    static PrintWriter out; 
    static BufferedReader stdin; 

    irc_in(Socket a, PrintWriter b, BufferedReader c) 
    { 
      server = a; 
      out = b; 
      stdin = c; 
    } 

    public void run() 
    { 
      String user_line; 
      while (true) 
      { 
        try 
        { 
          Thread.sleep(1000); 
          user_line = stdin.readLine(); 
          System.out.println("Got: " + user_line); 
          out.println(user_line); 
          out.flush(); 
        } 
        catch (IOException e) {} 
        catch (InterruptedException e) {} 
      } 
    } 
} 

,하지만 난 내 화면에 출력을 얻을 수 없습니다. 어떤 아이디어?

답변

3

문제 중 하나 일 수 있습니다.

t.run(); 

당신이 호출해야합니다 :로

 t.start(); 

실제로 스레드를 생성, 난 당신이 실행 메소드를 호출하여 스레드 클래스 객체에 방법을 시작하지 않는 한 당신은 쓰레드를 생성하지 않는 생각 run 메서드를 호출하면 메서드가 순차적으로 실행됩니다.

+0

좋아, t.run 아니지만, 지금은 서버에서 응답을 얻을. 내 out.println (user_line);과 관련이있는 특별한 것이 있습니까? – phyrrus9

2

그것은 t.start해야한다()는 일이()