【发布时间】:2020-09-24 19:52:38
【问题描述】:
我一直在学习 Java 中的客户端/服务器程序,并且对处理与服务器/客户端的读取和写入的许多不同方式感到不知所措。我的目标是从客户端一次发送一个 2 操作数整数表达式到服务器,服务器将评估它们并返回结果。我在下面列出了我遇到的 IO 选项。
输入示例
- Scanner input = new Scanner(socket.getInputStream());
- DataInputStream input = new DataInputStream(new BufferedInputStream(socket.getInputStream()));
- BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
- InputStream in = socket.getInputStream();
DataInputStream input = new DataInputStream(in);
- DataInputStream input =new DataInputStream(socket.getInputStream());
- InputStream input = socket.getInputStream();
输出示例
- PrintWriter output = new PrintWriter(socket.getOutputStream(), true);
- DataOutputStream output = new DataOutputStream(socket.getOutputStream());
- OutputStream out = socket.getOutputStream();
DataOutputStream output = new DataOutputStream(out);
- PrintStream output = new PrintStream(socket.getOutputStream());
- OutputStream output = socket.getOutputStream();
- ObjectOutputStream output = new ObjectOutputStream(socket.getOutputStream());
在所有这些方法中,哪一种最适合我的简单需求?另外,请让我知道其中一些方法是否过时,或者是否有一种更新的、传统的方法可用于这些天的基本套接字 IO。谢谢。
【问题讨论】:
-
如果协议是基于文本的,我倾向于使用 BufferedReader 和 BuffereWriter 类,并且我尽可能使用基于文本的协议。我这样做主要是为了便于调试。
标签: java sockets network-programming serversocket java-io