java - 客户端-服务器程序 - 基本差异和问题
问题描述
我有 2 个 Java 程序(1 个客户端和 1 个服务器),代码如下
我的问题是,为什么要使用缓冲阅读器?他对以下程序的目的是什么?为简单起见,不能只在客户端和服务器上使用 datainputstream/dataoutputstream 吗?他们仍然会交换信息对吗?
对不起,但我是编码新手:P
下面的代码:
服务器
import java.net.*;
import java.io.*;
class MyServerPing{
public static void main(String args[])throws Exception{
System.out.println("PING SERVER");
ServerSocket ss=new ServerSocket(3333);
Socket s=ss.accept();
DataInputStream din=new DataInputStream(s.getInputStream());
DataOutputStream dout=new DataOutputStream(s.getOutputStream());
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String str="",str2="";
while(!str.equals("stop")){
str=din.readUTF();
System.out.println("client says: "+str);
str2=br.readLine();
dout.writeUTF(str2);
dout.flush();
}
din.close();
s.close();
ss.close();
}
}
客户
import java.net.*;
import java.io.*;
class MyClientPong{
public static void main(String args[])throws Exception{
Socket s=new Socket("localhost",3333);
DataInputStream din=new DataInputStream(s.getInputStream());
DataOutputStream dout=new DataOutputStream(s.getOutputStream());
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String str="",str2="";
while(!str.equals("stop")){
str=br.readLine();
dout.writeUTF(str);
dout.flush();
str2=din.readUTF();
System.out.println("Server says: "+str2);
}
dout.close();
s.close();
}
}
谢谢,
解决方案
推荐阅读
- database - 通过 Keycloak 使用外部数据库
- concurrency - 当一个值的所有者可以读取它而另一个线程更改它时,Rust 如何防止数据竞争?
- sql - 如何在没有条件的情况下从表中删除最后一行?
- machine-learning - 多线程训练神经网络时没有数据访问同步正常吗?
- javascript - JS对象数组,按时间戳分组值
- mongodb - 出现错误:(55, 41) Kotlin:类型推断失败
- firebase - 如何将时间戳添加为 Firebase 键
- javascript - 仅使用 jquery 仅在特定 div id 内显示元素
- azure - 带有评分参数查询参数的天蓝色搜索请求返回错误
- java - 通过Controller方法获取bean和applicationContext的区别