2013-04-21 1 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

You 'got got the required 'InputStream', хотя нет гарантии, что он действителен при вводе цикла while. Так в чем ваш вопрос? – Sinkingpoint

+0

Извините, я знаю, что на данный момент не хватает валидации. Просто скелет, чтобы учиться. Мой вопрос: как я могу работать с этим объектом InputStream, чтобы читатьNextLine? Доступные методы - например read() - возвращают только int. – user2303598

+1

Начнем с изучения [Basic I/O] (http://docs.oracle.com/javase/tutorial/essential/io/) и [Все о сокетах] (http://docs.oracle.com/ javase/tutorial/networking/socket /) – MadProgrammer

ответ

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

+0

Не забудьте принять, если вы считаете, что это того стоит :) – Sinkingpoint

0

Добавьте следующую строку перед пока

BufferedReader inp2 = new BufferedReader(new InputStreamReader(inp)); 
while (true) { 
    try { 
     inp2.readLine(); 
    } 
} 
Смежные вопросы