You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

技术疑问:使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:58:06