2013-04-21 33 views
1

我已經連接到一個已經存在的服務器,它包含我需要讀入的字符串行。假設我只需要讀取字符串類型,哪個輸入讀取器可以在這裏工作,在我的While循環中按行逐行?這裏是我的簡單客戶端:如何讀取服務器的輸入行? (java客戶端控制檯應用程序)

public class Client 
{ 
public static final int PORT_NUMBER = 8888; 


public static void main(String[] args) 
{ 
int port = PORT_NUMBER; 
String content; 
OutputStream output; 
InputStream input; 
Socket s = null; 

try 
{ 
s = new Socket("server.example.exp", port); 
output = s.getOutputStream(); 
input = s.getInputStream(); 

System.out.println("Connected to " + s.getInetAddress() + " on port " + s.getPort()); 
} 
catch (IOException e) {System.err.println(e);} 

while (true) 
{ 
try 
{ 
    //read next line from server 
} 
catch (EOFException eof){ 
    System.out.println("eof encountered" + eof.getMessage()); 
    break; 
} 
catch (OptionalDataException ode){System.out.println("OptionalDataException" + ode.getMessage());} 
catch (IOException ioe){System.out.println("IOException on read object");} 
catch (ClassNotFoundException cnf){System.out.println("ClassNotFoundException");} 
} 


    } 
} 

我知道這是一個非常基本的問題,我只是遇到了麻煩,是一切。我很感激任何澄清。謝謝。

+0

你已經獲得了所需的'InputStream',但不能保證它在進入while循環時有效。那麼你的問題是什麼? – Sinkingpoint 2013-04-21 03:57:17

+0

對不起,我知道它目前缺乏驗證。只是一個可以學習的骨架。 我的問題是我如何使用該InputStream對象來readNextLine?可用的方法 - 比如read() - 只返回int。 – user2303598 2013-04-21 04:02:23

+1

首先查看[Basic I/O](http://docs.oracle.com/javase/tutorial/essential/io/)和[All about sockets](http://docs.oracle.com/) javase/tutorial/networking/sockets /) – MadProgrammer 2013-04-21 04:06:38

回答

1

從InputStream讀取數據,添加以下線,您可以在InputStreamReader紙包起來,然後再BufferedReader,從中可以READLINE:

BufferedReader input; 
input = new BufferedReader(new InputStreamReader(s.getInputStream())); 

Then: 
while(true){ 
    try{ 
     input.readLine();//Read from server 
    } 
+0

感謝這有所幫助。我可以嘗試從這裏工作。 – user2303598 2013-04-21 04:21:50

+0

不要忘記接受,如果你覺得它值得:) – Sinkingpoint 2013-04-21 04:24:40

0

之前,您同時

BufferedReader inp2 = new BufferedReader(new InputStreamReader(inp)); 
while (true) { 
    try { 
     inp2.readLine(); 
    } 
} 
相關問題