技术疑问:使用Socket.getInputStream与System.in构造InputStreamReader的区别?
这两段代码的核心区别解析
先把你贴的代码清晰列出来:
// 第一段代码 BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); String inputLine = in.readLine(); // 第二段代码 BufferedReader d = new BufferedReader(new InputStreamReader(System.in)); String inputLine = d.readLine();
核心区别在于读取的数据源完全不同:
- 第一段代码:
clientSocket.getInputStream()获取的是客户端Socket连接的输入流——它读的是从远程客户端(比如另一台电脑的程序、手机APP等)通过网络发送过来的数据,和本地键盘输入没有关系。比如你写了一个服务器程序,这段代码就是用来接收连接过来的客户端发送的消息。 - 第二段代码:
System.in是Java里的标准输入流,默认对应本地电脑的键盘输入。这段代码才是读取你在控制台敲入的内容,也就是你原本以为的“接收用户键盘输入”的逻辑。
简单总结:前者读的是网络数据,后者读的是本地键盘输入,作用完全不同哦~
内容的提问来源于stack exchange,提问作者skyzhuzhu
相关产品推荐
相关产品推荐

