使用一个套接字创建 2 个流

2024-04-02

我正在尝试创建一个在互联网上运行的多人游戏。问题是我正在尝试获取流上的输入,但由于某种原因我无法使用一个套接字创建 2 个流,我将解释一下:

Socket s=new Socket("127.0.0.1",5001);
ObjectInputStream obj1=new ObjectInputStream(s.getInputStream());
ObjectInputStream obj2=new ObjectInputStream(s.getInputStream());

有人可以解释一下为什么这个代码片段不起作用吗?

编辑:这是不起作用的代码示例的另一个示例。

while (true) {
    try {
        objI = new ObjectInputStream(sock.getInputStream());
        objO = new ObjectOutputStream(sock.getOutputStream());
     }catch(Exception e) {
        e.printStackTrace();
     }
}

编辑2:非常感谢您的回答。我尝试刷新对象,但不断收到此错误:

java.io.StreamCorruptedException: invalid stream header: 33740003
at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
at java.io.ObjectInputStream.<init>(Unknown Source)
at Proccess.run(Proccess.java:22)
at java.lang.Thread.run(Unknown Source)

流是stateful- 当您从流中读取时,您正在从流中的某个位置读取,并通过这样做来更改位置。

如果两个事物(比如两个包装器 ObjectInputStream)同时从底层流中读取,它们都会尝试更改流中的位置,但两者都不知道对方在做什么。因此,从一个读取会改变位置,然后另一个期望流位于它离开的位置,但事实并非如此。

想象一下,你得到的答案是写在不同的纸上的,一张一张地给你的。但是当你正在阅读这些纸片时,在你看到它们之前,其他人就拿走了其中的一些——你得到的东西没有意义。这就是正在发生的事情 - 一个流带走了部分数据,当另一个流再次查看数据时,其中一些数据丢失了,被另一个流消耗了。

Have one读取传入对象的 ObjectInputStream。如果要将这些对象发布给多个使用者,请创建一个事物集合来将传入对象发送到其中,然后迭代它们并将新对象传递给每个使用者。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用一个套接字创建 2 个流 的相关文章

  • createImage(int width, int height) 的问题

    我有以下代码 作为游戏的一部分每 10 毫秒运行一次 private void gameRender if dbImage null createImage returns null if GraphicsEnvironment isHea
  • 使用 GWT 读取非常大的本地 XML 文件

    我正在使用 GWT 构建我的第一个 Java 应用程序 它必须从一个非常大的 XML 文件中读取数据 当我尝试发送对文件中信息的请求时遇到问题 并且我不太确定它是否与文件的大小或我的语义有关 在我的程序中 我有以下内容 static fin
  • 如何在 Antlr4 中为零参数函数编写语法

    我的函数具有参数语法 如下面的词法分析器和解析器 MyFunctionsLexer g4 lexer grammar MyFunctionsLexer FUNCTION FUNCTION NAME A Za z0 9 DOT COMMA L
  • 打印星号的 ASCII 菱形

    我的程序打印出这样的钻石 但只有当参数或菱形的每一面为4 例如如果我输入6 底部三角形的间距是错误的 我一直在试图找出答案 当参数改变时 底部的三角形不会改变 只有顶部的三角形会改变 它只适用于输入4 public static void
  • GWT - 如何组织项目以拥有多个网页以及它们之间的导航

    我是 GET 的新手 顺便说一句 它给我留下了深刻的印象 并且发现它对于像我这样熟悉 C NET 桌面技术并愿意编写 Web 应用程序的人来说非常有吸引力 我根据 GWT Eclipse 向导生成的示例启动了自己的项目 该项目生成带有面板的
  • 通往楼梯顶部的可能路径

    这是一个非常经典的问题 我听说谷歌在他们的面试中使用过这个问题 问题 制定一个递归方法 打印从楼梯底部到楼梯顶部的所有可能的独特路径 有 n 个楼梯 您一次只能走 1 步或 2 步 示例输出 如果它是一个有 3 级楼梯的楼梯 1 1 1 2
  • 大数据使用什么数据结构

    我有一个包含一百万行的 Excel 工作表 每行有 100 列 每行代表一个具有 100 个属性的类的实例 列值是这些属性的值 哪种数据结构最适合在这里使用来存储数百万个数据实例 Thanks 这实际上取决于您需要如何访问这些数据以及您想要
  • 如何在代理后面安装 Eclipse Neon

    对于 Neon Eclipse 附带了一个安装程序 我在安装程序中找不到任何配置菜单 我的java版本是 java version java version 1 8 0 72 Java TM SE Runtime Environment b
  • 如何根据运行的 jar 的结果让我的 ant 任务通过或失败?

    我正在运行 CrossCheck 无浏览器 js 单元测试 作为 ant 脚本的一部分 如果 CrossCheck 测试失败 我希望 ant 报告失败 这是 build xml 中的相关部分
  • 套接字的读写如何同步?

    我们创建一个套接字 在套接字的一侧有一个 服务器 在另一侧有一个 客户端 服务器和客户端都可以向套接字写入和读取 这是我的理解 我不明白以下事情 如果服务器从套接字读取数据 它在套接字中是否只看到客户端写入套接字的内容 我的意思是 如果服务
  • 如何在 Spring 属性中进行算术运算?

  • 读取电子邮件的文本文件转换为 Javamail MimeMessage

    我有一个电子邮件原始来源的文本文件 直接从 gmail 复制 如果您单击 查看原始文件 您就会看到它 我想读入该文件并将其转换为 MimeMessage 如果您好奇为什么 我设置了 JavaMaildir 并且需要用电子邮件填充它的收件箱以
  • 使用 Mockito 模拟某些方法,但不模拟其他方法

    有没有办法使用 Mockito 模拟类中的某些方法 而不模拟其他方法 例如 在这个 诚然是人为的 Stock我想嘲笑的班级getPrice and getQuantity 返回值 如下面的测试片段所示 但我想要getValue 执行乘法 如
  • 使用布尔值进行冒泡排序以确定数组是否已排序

    我有以下用于冒泡排序的代码 但它根本不排序 如果我删除布尔值那么它工作正常 我知道 由于我的 a 0 小于所有其他元素 因此没有执行交换 任何人都可以帮助我解决这个问题 package com sample public class Bub
  • Java Swing:需要一个高质量的带有复选框的开发 JTree

    我一直在寻找一个 Tree 实现 其中包含复选框 其中 当您选择一个节点时 树中的所有后继节点都会被自动选择 当您取消选择一个节点时 树中其所有后继节点都会自动取消选择 当已经选择了父节点 并且从其后继之一中删除了选择时 节点颜色将发生变化
  • Hamcrest Matchers - 断言列表类型

    问题 我目前正在尝试使用 Hamcrest Matchers 来断言返回的列表类型是特定类型 例如 假设我的服务调用返回以下列表 List
  • 将 Apache Camel 执行器指标发送到 Prometheus

    我正在尝试转发 添加 Actuator Camel 指标 actuator camelroutes 将交换 交易数量等指标 发送到 Prometheus Actuator 端点 有没有办法让我配置 Camel 将这些指标添加到 Promet
  • 配置“DataSource”以使用 SSL/TLS 加密连接到 Digital Ocean 上的托管 Postgres 服务器

    我正在尝试托管数据库服务 https www digitalocean com products managed databases on 数字海洋网 https en wikipedia org wiki DigitalOcean 创建了
  • 在浏览器刷新中刷新检票面板

    我正在开发一个付费角色系统 一旦用户刷新浏览器 我就需要刷新该页面中可用的统计信息 统计信息应该从数据库中获取并显示 但现在它不能正常工作 因为在页面刷新中 java代码不会被调用 而是使用以前的数据加载缓存的页面 我尝试添加以下代码来修复
  • Java EE 目录结构

    我对以下教程有疑问 http www mkyong com jsf2 jsf 2 internationalization example http www mkyong com jsf2 jsf 2 internationalizatio

随机推荐

  • 如何使用这样的闭包参数初始化结构体?

    In 这个问题 https stackoverflow com questions 70039118 uncertain of this swift struct syntax with closure 70039340 noredirec
  • Javascript 将毫秒显示为天:小时:分钟,没有秒

    我正在计算两个日期之间的差异 其中有许多不同的示例可用 返回的时间以毫秒为单位 因此我需要将其转换为更有用的东西 大多数示例都是天 小时 分钟 秒或小时 分钟 但我需要天 小时 分钟因此秒应四舍五入为分钟 我当前使用的方法很接近 但显示 3
  • 如何将自定义构建的 jar 文件注册为 Maven 主要工件?

    我有一个项目预计会提供一个 jar 文件
  • Android 使用 Intent 获取 url

    我正在尝试获取单击以打开应用程序的 URL 我只是找不到从哪里可以获得这些信息 我有一个清单 单击时会打开应用程序 链接将是 我试图将其交给应用程序来处理
  • 如何在请求进行 Ajax 时显示加载 gif

    我试图在 ajax post 请求发送时显示加载 gif 图像 实际上我的代码是通过画布捕获图像 并且该图像呈现并转到 php 页面进行保存 该 php 文件保存并返回图像 现在我需要在请求发布时显示加载图像 并在 ajax 请求完成时隐藏
  • 正则表达式替换R中的所有上标

    尽管有很多关于 R 中的正则表达式的示例和问题 但它们似乎都不适合我的问题 在我的项目中 我正在努力处理像 4x1 1x1 这样的字符串 上标字符对我来说似乎很有问题 我的目标 从4x1 1x1 我想要得到4x1 1x1 只需将所有上标替换
  • 设置了正确的内容类型,但 .ipa 文件被视为 .zip 文件

    我编写了一个小型 Rails 应用程序 我可以在其中上传三个文件 我需要这些文件来无线分发临时构建 这包括一个 ipa文件 一个 mobileprovisioning文件和一个 plist File 现在的问题是 当我点击链接时 ipa归档
  • 是否可以在 Netbeans 7.0 应用程序中使用 Jzy3D?

    好吧 我们正在尝试将 3D 散点图合并到 Netbeans 7 0 中的项目中 我们选择测试的库之一是 Jzy3D 看起来它会做我们需要它做的一切 但不幸的是 它什么也没做 我已经正确安装了 JOGL 并对其进行了测试 发现它可以正常工作
  • 阻止 FlowType 检查 node_modules 中的错误

    我曾尝试寻找解决方案或解决此问题的方法 但没有成功 以下是描述我的流程安装以及最终我面临的问题的一些步骤 Step 1 我使用创建了一个新的反应本机项目react native init TestProject 我想配置flow http
  • 在 dotnet 新模板中包含“隐藏”文件

    我正在尝试创建一个简单的dotnet new包含我的团队使用的 默认 editorconfig 和 gitconfig 的模板 不幸的是 files 不会被包含在dotnet pack 这是我的 csproj 的一部分
  • SonataAdminBundle表单字段查询

    在 Admin 类的 SonataAdminBundle 中 我无法创建ManyToMany 字段上的 orderBy https github com sonata project SonataAdminBundle issues 328
  • 在 C++ 的 if 语句中使用多个条件

    我正在尝试在 C 中创建一个复杂的 if 语句 这将使我免于编写一大堆 if 语句 我想知道下面的代码是否确实有意义 或者我忽略了一个错误 if input choice cout lt lt Tie lt lt endl else if
  • Flyway Gradle 插件 - 循环依赖

    我有一个使用 gradle flyway gradle 插件 mybatis 生成器和 postgres 的项目 在我的 build gradle 中 我有 compileJava dependsOn myBatisGenerator 我想
  • LinkedIn 集成 r_network 和 w_messages 请求在 iOS sdk 中无法协同工作

    我已经完成了 LinkedIn 集成 并且必须向特定用户发送消息 为此 我首先要获取连接 然后发送消息 void requestTokenFromProvider OAMutableURLRequest request OAMutableU
  • 具有不重叠条目集的两列值的共同出现表

    import pandas as pd 可重复的设置 我有一个数据框 df pd DataFrame from dict A a b b c d d c b B p q p q r r p q ie A B 0 a p 1 b q 2 b
  • 如何编写 T4 模板以从 Entity Framework 6 创建 DTO?

    我有一个大型数据库 我在 Entityframework 中使用数据库优先模型 它位于互联网服务器上并通过 WCF 进行通信 域模型使用所有小写字母来表示实体 存储过程和列 属性的名称 在我的客户端应用程序中 我希望使用标准 PascalC
  • JS 可变变量可以从闭包访问[重复]

    这个问题在这里已经有答案了 所以我的 JS 编译器中有一个警告 但是你能向我解释一下这是否真的会影响我的代码的执行方式吗 for x 0 x lt levels length x var level levels x var candles
  • 通过php代码在xls表中插入图片

    问候 我必须在行 0 列 0 上插入徽标 图像 我为此使用 Spreadsheet Excel Writer 我尝试了它的 insertBitmap 方法 程序工作正常 但不显示位图图像在 xls 工作表上 而不是空白行 可能是什么原因 您
  • 分发预先经过 NGEN 处理的程序集是否有意义?

    我发现了一些关于使用 NGEN 作为安装程序的最后一步的有趣链接这个帖子 https stackoverflow com questions 522323 how do i run ngen at the end of the instal
  • 使用一个套接字创建 2 个流

    我正在尝试创建一个在互联网上运行的多人游戏 问题是我正在尝试获取流上的输入 但由于某种原因我无法使用一个套接字创建 2 个流 我将解释一下 Socket s new Socket 127 0 0 1 5001 ObjectInputStre