难以理解在服务器-客户端应用程序中初始化输入和输出流

时间:2018-11-26 16:17:45

标签: java networking server client

我正在编写一个客户端服务器应用程序,其中Client请求一个文件,如果Server找到它,它将把文件发送到Client。我使用ObjectInputStreamObjectOutputStream发送和接收它们之间的所有消息。我的应用程序实际上只是在工作,但是我希望有人可以解释一下我觉得不是很直观的部分。

我这样初始化客户端ObjectOutputStreamObjectInputStream

private void setupStreams() throws IOException{
    //initialize output
    output = new ObjectOutputStream(socket.getOutputStream());
    output.flush();

    //initialize input
    input = new ObjectInputStream(socket.getInputStream());
    System.out.println("Client streams initialized...");
}

这部分对我来说很有意义,因为在应用程序的后面,当我要将信息从Client发送到Server时,我会使用output.writeObject()。令我感到困惑的部分是,在我的Server接受了Client的{​​{1}}连接之后,我像这样初始化了ServerSocketObjectInputStream

ObjectOutputStream

在我看来,我似乎正在将private void setupStreams() throws IOException{ output = new ObjectOutputStream(clientSocket.getOutputStream()); output.flush(); input = new ObjectInputStream(clientSocket.getInputStream()); System.out.println("Server streams initialized..."); } 的输出初始化为初始化客户端所用的同一Server,因为OutputStream是从clientSocket方法。凭直觉,我觉得应该将ServerSocket.accept() Server初始化为ObjectOutputStream clientSocket,以便将消息发送到ObjectInputStream的{​​{1}} 。

很明显,如果我尝试得到一个编译错误,那么我知道它不是那样做的,但是我想我只是想知道我是否缺少某些东西?还是我不了解的事情正在发生?

如果任何人需要澄清或想要查看代码的更多部分以进行理解,请询问。

0 个答案:

没有答案