当前位置: 首页 > 知识库问答 >
问题:

在Java中使用InputStreamReader时出错

浦修文
2023-03-14
_port   = 8071;
_socket = new Socket("localhost", _port);

Random rand = new Random();
int  n = rand.nextInt(50) + 1;
DataOutputStream dos = new DataOutputStream(_socket.getOutputStream());
dos.writeInt(n);
dos.flush();
try {
    input = new BufferedReader(new InputStreamReader(socket.getInputStream()));

    ObjectInputStream in = null;
    in = new ObjectInputStream(socket.getInputStream());
    int ClientNumber= in.readInt();
    System.out.println(ClientNumber);
}

无效的流头:0000002b at java.io.objectinPutStream.ReadStreamHeader(ObjectinPutStream.java:781)at java.io.objectinPutStream.(ObjectinPutStream.java:278)at servicerEquest.run(servicerEquest.java:24)at java.util.concurrent.executors$runnableAdapter.call(executors.java:439)at java.util.concurrent.futureTask$sync.innerRun在java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:895),在java.lang.thread.run(thread.java:680)

有人知道是什么导致了错误吗?我的代码设置不当吗?

共有1个答案

范甫
2023-03-14

您使用DataOutputStream编写,使用ObjectInPutStream读取。您应该使用DataInputStream:

// Note declaration and assignment in a single statement. There's no point in
// making it null first.
DataInputStream in = new DataInputStream(socket.getInputStream());

// Note use of camelCase for variable name
int clientNumber = in.readInt();

在这里还应该去掉输入:您没有从中读取,而且由于这看起来像是二进制数据流,因此将其视为文本是不合适的。

哦,您应该在finally块中关闭输入流。

 类似资料:
  • 我试图创建一个简单的源代码阅读器,使用EditText视图中输入的网址读取和显示网页的源代码,但不能正确初始化InputSteramReader和BufferedReader。在Android 4.4.2上测试以下代码,LogCat显示此错误: URL url=null; url=新url(et.getText()。toString()); URLConnection conn=url。openC

  • 主要内容:1 什么是Java InputStreamReader,2 Java InputStreamReader的构造方法,3 Java InputStreamReader的方法,4 Java InputStreamReader的例子1 什么是Java InputStreamReader InputStreamReader是从字节流到字符流的桥梁:它读取字节,并使用指定的字符集将它们解码为字符。它使用的字符集可以按名称指定,也可以明确指定,也可以接受平台的默认字符集。 2 Java Input

  • 我是一个编程初学者,我一直在做一个小项目,著名的游戏叫做俄罗斯方块,我遇到了这个小问题,我希望你能帮助我解决这个问题。我导入了:和以便能够使用我的键盘玩游戏,但是当我扩展我创建的类以使用这些键时,它显示了一个错误!! 错误发生在这里,说: 类TAdapter扩展keyAdapter{//第二个发生在此处:keyAdapter不能//解析为类型public void keyPressed(keyEv

  • 我试着从用户那里获取一个输入,让这个程序从一些更复杂的东西开始。然而,无论我尝试什么,我都会遇到以下错误: 我在这里运行此代码: 任何帮助都非常感谢!

  • 问题内容: 因此,我相信这个问题已经问了一百万遍了,我已经阅读了几个小时,并尝试了一些人给出的几种选择,但是没有一个对我有用。 我想列出应用程序JAR内目录中的所有文件,因此在IDE中可以运行: 这给了我目录中的所有文件。 现在,我也尝试过: 然后从IDE中打印目录中的所有文件。外部IDE打印:“行尾”。 现在,我也可以在Jar中找到一个条目: 那是我必须对那个String进行的可怕编码。 无论如

  • 问题内容: 因此,我在Google上搜索了几分钟如何使用计时器,并在此处找到了一些有用的线程。但是,当我想使用建议的代码时,Eclipse总是向我显示错误。 这是我现在要使用的代码。Eclipse在最后一行下划线,并在它们建议“删除参数以匹配’Timer()’”时加下划线。此外,它强调了start()并希望将其强制转换。:S 有人可以帮我吗?我已经安装了最新的Java版本^^ 多谢。 问题答案: