2013-03-22 2 views
2

Я хочу отправить несколько строк из A в B с помощью DataInputStream.Использование DataInputStream и DataOutputStream

Я знаю, как отправить их через .write(), но я не уверен в том, что вы можете отличить строки. На самом деле - после исследования не представляется возможным, если это возможно, если я не добавлю символ в строку и не разбить на B.

Будут рассмотрены любые альтернативы использованию DataInputStream. Я собирался создать Array и отправить его, хотя я не был уверен, как это сделать.

До сих пор у меня есть:

public String getDetails() {  
System.out.print("Name: "); 
String uiname = scan.next(); 
pout.write(uiname); 

System.out.print("Address: "); 
String uiaddress = scan.next(); 

pout.write(uiaddress); 

return ""; 

}

+0

Что такое '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''? – SudoRahul

+0

Клиент и сервер –

+0

в чем проблема с использованием 'DataInput-/OutputStream'? Если вы используете его, вы отправляете двоичные данные. Не нужно отделять ваши строки, поскольку они отправляются как отдельные объекты. – Zhedar

ответ

2

Пока ваши строки длиной < 65536 символов, вы можете использовать DataOutputStream.writeUtf() и DataInputStream.readUTF(). Если вам нужно что-то более сложное, чем строки и примитивы, вам нужно будет использовать ObjectOutputStream и ObjectInputStream.

Пример (который может содержать ошибки синтаксиса):

DataOutputStream out = new DataOutputStream(...); 
out.writeUtf("foo"); 
out.writeUtf("bar"); 
out.close(); 

DataInputStream in = new DataInputStream(...); 
String s1 = in.readUtf(); 
String s2 = in.readUtf(); 
// that's all, folks! 

Метод writeUtf() предшествует строку со счетчиком его символов. Метод readUtf() сначала получает количество символов, затем считывает точно столько символов. Пока вы просто пишете/читаете строки, потоки могут понять это.

1

Две идеи:

  • Использование DataOutputStream.writeUTF и DataInputStream.readUTF

  • Используйте формат "держатель", как JSON (или XML) и построить массив JSON, что вы "печать", а затем декодирует в другой (используя библиотеку JSON на уровне json.org)

+0

Почему потоки объектов? В DataInput/OutputStreams есть эти методы. – EJP

+0

Правда. Я думал о экземплярах объектов и не понимал, что он доступен в родительском классе. –

+0

Исправлен ответ –

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