java DataOutputStream getOutputStream () getInputStream () - PullRequest
1 голос
/ 06 февраля 2011

один вопрос

в случае, например,

DataOutputStream output= new DataOutputStream(clientSocket.getOutputStream()) ;

или

DataInputStream in = new   DataInputStream(clientSocket.getInputStream());

эти объекты должны создаваться каждый раз, когда мне нужен ввод / выводоперация или просто вызывать чтение или запись на них каждый раз, когда мне нужно ???(плюс некоторая промывка после каждой операции)

Ответы [ 2 ]

3 голосов
/ 06 февраля 2011

Вы должны создавать эти объекты только один раз, то есть после инициализации сокета.

2 голосов
/ 06 февраля 2011

Оба варианта возможны, но более полезно создать их только один раз.

Если вам нужна некоторая буферизация (чтобы избежать отправки нового TCP-пакета для каждой команды записи), вы можете подумать оПомещение BufferedInputStream между Socket и DataIn / Output:

DataOutput output = new DataOutputStream(new BufferedOutputStream(clientSocket.getOutputStream()));
DataInput input   = new DataInputStream (new BufferedInputStream (clientSocket.getInputStream()));

Я использую интерфейсы DataInput / DataOutput вместо классов Stream здесь, так как часто вам нужны только методы, определенные там.

...