假设我有一个Server
和Client
,其中包含以下任务:
- 验证(发送和接收验证码)
- 继续接收消息
- 继续发送心跳消息
我把它编码为:
public class Sample{
/** Some code here... **/
//Everything start in authentication() method.
private void authenticate(){
//...
List<Object> msg = new ArrayList<>();
ObjectOutputStream output = new ObjectOutputStream(socket.getOutputStream());
msg.add(0, AUTHENTICATION);
msg.add(1, id);
output.writeObject(msg);
output.flush();
output.reset();
ObjectInputStream input = new ObjectInputStream(socket.getInputStream());
msg.addAll((Collection<?>) input.readObject());
input.reset();
/** Validate **/
if(AUTHENTICATION_IS_TRUE){
startSendingHeartBeat();
startReceivingMessage();
}
}
private void startSendingHeartBeat(){
//...
List<Object> msg = new ArrayList<>();
ObjectOutputStream output = new ObjectOutputStream(socket.getOutputStream());
while(true){
msg.clear();
msg.add(0, "XXX");
msg.add(1, id);
output.writeObject(msg);
output.flush();
output.reset();
}
}
private void startReceivingMessage(){
//...
List<Object> msg = new ArrayList<>();
ObjectInputStream input = new ObjectInputStream(socket.getInputStream());
while(true){
msg.clear();
msg.addAll((Collection<?>) input.readObject());
input.reset();
}
}
}
如您所见,我为3种方法创建了ObjectOutputStream
和ObjectInputStream
。
这是个坏主意吗?我应该只声明并初始化一个ObjectOutputStream
/ ObjectInputStream
并在每次需要时使用它吗?
我还没有遇到任何问题,但我有疑问。