从套接字读取二进制数据

2024-03-15

我正在尝试连接到服务器,然后向其发送 HTTP 请求(在本例中为 GET)。这个想法是请求一个文件,然后从服务器接收它。

它应该适用于文本文件和二进制文件(例如 imgs)。我对文本文件没有问题,它工作得很好,但我对二进制文件有一些麻烦。

首先,我声明一个 BufferedReader (用于读取标头和文本文件)和一个数据输入流:

BufferedReader in_text = new BufferedReader(
    new InputStreamReader(socket.getInputStream()));

DataInputStream in_binary = new DataInputStream(
    new BufferedInputStream(socket.getInputStream()));

然后,我使用 in_text 读取标题并发现它是文本文件还是二进制文件。如果它是一个文本文件,我会在 StringBuilder 中正确读取它。如果它是二进制文件,我声明一个 byte[filesize] 并存储 in_binary 的以下内容。

byte[] bindata = new byte[filesize];
in_binary.readFully(bindata);

但这不起作用。我收到 EOFException。

我想也许 in_binary 仍然位于流的第一个位置,所以它还没有读取标头。所以我捕获了标头的长度并跳过 in_binary 中的字节。

byte[] bindata = new byte[filesize];
in_binary.reset();
in_binary.skip(headersize);
in_binary.readFully(bindata);

而且还是一样。

可能发生什么情况?

Thanks!

PD:我知道我可以使用 URLConnection 等等。那不是问题。


BufferedReader缓冲数据(因此得名)——几乎可以肯定,它会从套接字读取更多的数据,而不仅仅是标头。因此,当您尝试读取实际数据时,有些数据已经从套接字中读取。如果您尝试仅读取几个字节,您可能会发现它们不是实际响应数据的第一个字节。

如果你知道如何使用URLConnection,我想知道你有什么理由不使用它。

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

从套接字读取二进制数据 的相关文章

  • 如何将完整的日期格式拆分为日期和时间?

    我有很多格式为我的示例所示的字符串 我必须解析它们 我正在尝试确定今天是哪根弦 我的问题是 时间快到了 我只需要比较那个日期 接下来我想检查时间是否在 after 和 before 的两个时间戳 HH mm ss 之间 但存在问题 日期几乎
  • AMQP Spring 集成错误处理

    我的集成流程如下所示 Bean public IntegrationFlow auditFlow Qualifier eventLoggingConnectionFactory ConnectionFactory connectionFac
  • Android:TelephonyManager 类

    我不明白为什么 API 文档中这么写TelephonyManager类是public 但是当我尝试创建一个实例时 它说它不是公共类 并且无法从包中访问 我看到它也说使用Context getSystemService Context TEL
  • Java 表达式树 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有相当于 net的 LINQ 下的表达式树JVM 我想实现一些类似 LINQ 的代码结构Scala
  • 为什么不自动装箱泛型的 Java 基本类型?

    Java 不允许在通用数据结构中使用原始类型 例如 不允许使用 ArrayList 原因是 原始类型不能直接转换为Object 然而 Java 1 5 确实支持自动装箱 并且包装类在通用数据结构中工作 那么为什么编译器不能将其自动装箱到 A
  • Eclipse Oxygen - 该项目未构建,因为其构建路径不完整

    我刚刚安装了 Eclipse Oxygen 并尝试在工作台中打开现有项目 但收到此错误 该项目未构建 因为其构建路径不完整 不能 找到 java lang Object 的类文件 修复构建路径然后尝试 建设这个项目 我尝试右键单击该项目 转
  • Eclipse RCP - 将视图与编辑器区域堆叠?

    在开发 Eclipse RCP 应用程序时 是否可以将视图与编辑器区域堆叠在一起 像这样 我有多个列表 表格 我想创建一种预览组合 当通过单击鼠标选择列表上的项目时 我希望我的预览合成显示该项目的数据 如果用户双击某个项目 我想在预览合成后
  • Linux 使用 boost asio 拒绝套接字绑定权限

    我在绑定套接字时遇到问题 并且以用户身份运行程序时权限被拒绝 这行代码会产生错误 acceptor new boost asio ip tcp acceptor io boost asio ip tcp endpoint boost asi
  • Java 8 Stream - 并行执行 - 不同的结果 - 为什么?

    假设我有一个List
  • 如何在 QueryDSL 中选择文字

    我目前正在开发一个使用 queryDSL 和 hibernate 的项目 其中它需要一个选择文字 按照发布的示例here https stackoverflow com questions 18691317 querydsl how to
  • java中永远不会出现的异常

    我为点和向量编写一个类 我想用它们来计算向量的点和范数 这些是点类和向量类 public class Point public float x y public class MyVector public Point start end 我
  • Log4j 2.0 中发现 ClassNotFoundException

    我已经设置了 log4j12 api beta2 jar 的构建路径 但它给出了 以下错误请帮我解决这个问题我的代码如下 java 文件 package com sst log4j class Product private int pro
  • 带等待/通知的同步块与不带等待/通知的同步块之间的区别?

    如果我只是使用synchronized 不是wait notify方法 它仍然是线程安全的吗 有什么不同 Using synchronized使方法 块一次只能由一个线程访问 所以 是的 它是线程安全的 这两个概念是结合在一起的 而不是相互
  • 如何在 Hibernate 中自动递增复合主键中的 Id?

    我有一个带有复合主键的表 groupId and batchId 实体类看起来像 Entity name EMPLOYEE public class Employee EmbeddedId private EmployeePK employ
  • java中什么是静态接口?

    我正在阅读Map Entry界面 当我注意到它是一个static界面 我不太明白什么是静态接口 它与常规接口有什么不同 public static interface Map Entry
  • Volley 在第一次调用方法时返回 null

    我正在尝试使用 volley 从服务器检索数据 但是当我第一次调用此方法时 我收到服务器的响应 但该方法返回 null 如果我第二次调用它 我会得到最后的响应 public String retrieveDataFromServer Str
  • 将 SQL 数据中的一行映射到 Java 对象

    我有一个 Java 类 其实例字段 以及匹配的 setter 方法 与 SQL 数据库表的列名相匹配 我想优雅地从表中获取一行 到 ResultSet 中 并将其映射到此类的实例 例如 我有一个 Student 类 其中包含实例字段 FNA
  • 需要在没有wsdl的情况下调用soap ws

    我是网络服务的新手 这个网络服务是由 siebel 提供的 我需要调用一项网络服务 我的客户向我提供了以下详细信息 这是 SOAP 对于产品 请使用它作为端点 Request
  • 将其元素添加到另一个列表后清除列表

    我正在做一个程序 它获取更多句子作为参数 我制作了 2 个列表 一个称为 propozitie 其中包含每个句子 另一个称为 propozitii 其中包含所有句子 问题是 当我在遇到 后清除 propozitie 列表时 它也会清除 pr
  • removeall 和removeif 的用例

    我找到了这个 fun main val list MutableList

随机推荐

  • 创建 Python .exe 文件:py2exe 无效图像错误

    我想创建一个 exe文件 我使用 Python 2 7 3 和 wxPython 作为 GUI 我已经安装了py2exe对于Python 2 7并尝试创建一个 exe按照教程创建文件http www py2exe org index cgi
  • 使用 C# 和 XAML 在 Windows 应用商店应用程序中绑定资源文件值字符串

    我有资源文件 Strings en US Resources resw 我正在尝试绑定到该文件中的字符串 如下所示
  • 是否可以在 MAILTO 链接的正文中添加 HTML 链接[重复]

    这个问题在这里已经有答案了 我不必过多地处理 mailto 链接 但是 如果可能的话 我现在需要在邮件正文中添加一个链接 有没有办法添加链接或将打开的电子邮件更改为 html 电子邮件与文本电子邮件 就像是 a href Link text
  • 实体框架 V4:“仅代码”性能注意事项

    我即将开始一个新项目 想知道 仅代码 是否是正确的方法 我们还考虑通过设计器使用其他模型优先方法 但宁愿在 EF 设计器之外设计我的域模型 我们的域可能包含 100 多个实体 我读到大量实体可能会在一定程度上减慢 EF 的速度 即 创建上下
  • 从第 1 列中取出最小值的整行

    我有这个文件 2 1 12 2 34 1 56 1 45 3 33 2 77 1 83 2 62 3 75 3 我想像这样从第 1 列中取出最小值的整行 2 1 12 2 45 3 首先是这里 if vals 2 vals 2 gt 1 v
  • 原则 2 优先于多对一关联

    是否可以覆盖 ManyToOne targetEntity I read 这个学说文档页面 http docs doctrine project org projects doctrine orm en latest tutorials o
  • @Value -> 无法将类型“java.lang.String”的值转换为所需类型“java.lang.Integer”

    美好的一天 我正在使用 Spring 4 1 1 RELEASE 开发一个 Web 应用程序 所有 Spring 配置都是通过注释完成的 除了一件事之外它工作正常 我的项目中有一个 config properties 文件 其中包含这些行
  • 如何从 node-webkit 应用程序打开浏览器窗口?

    我有一个桌面应用程序 使用 node webkit 打包 我需要通过单击链接打开用户的默认浏览器 我在用 window open www google com 但这会打开一个新的 node webkit 窗口 而不是打开浏览器窗口 我如何打
  • JSF 视图 - 在操作上返回 null 不会更新视图

    我读过与我有同样问题的帖子JSF ViewScope 在不更新视图的操作上返回 null https stackoverflow com questions 13914594 jsf viewscope returning null on
  • UWP:PRI277:0xdef00532 - 资源“”的值冲突

    作为 Visual Studio 2017 UWP 生成过程的一部分 会运行一个名为 MakePri exe 的应用 它在我的项目中引发错误 但我不知道为什么 命令行调用是 C Program Files x86 Windows 套件 10
  • 打印文件中一行的最后一列

    我有一个不断被写入 更新的文件 我想找到包含特定单词的最后一行 然后打印该行的最后一列 该文件看起来像这样 随着时间的推移 将会添加更多 A1 B1 C1 行 A1 123 456 B1 234 567 C1 345 678 A1 098
  • Java 中的内存 OLAP 引擎 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有内存中 OLAP 切片和切块数据 Java 库 相当于 Microsoft 分析服务 特别想听听
  • 修复了页眉与页内锚点重叠的问题

    如果我在 HTML 页面中有一个非滚动标题 固定在顶部 具有定义的高度 有没有办法使用 URL 锚点 fragment部分 让浏览器滚动到页面中的某个点 但仍然尊重固定元素的高度无需 JavaScript 的帮助 http example
  • 无法在 yum 上下载 caddy 包

    我在 Amazon Linux 上使用 AWS EC2 当我尝试下载 caddy yum install caddy 时 出现以下错误 如屏幕截图所示 编辑 2022 年 11 月 19 日 A H 的回答 https stackoverf
  • 找不到所需的文件index.html - Heroku 推送错误

    我正在使用 Heroku CLI 将 React Node 应用程序推送到 Heroku 构建失败 错误为找不到所需的文件index html 我已经检查了所有文件和一切就位 不知道我错过了什么 我被困在这里一星期了 请帮我 我正在使用 H
  • 如何在搜索之前编辑 jQuery 自动完成的输入?

    我有一个自动完成框 出于本示例的目的 因为它是一个简单的示例 返回一个包含社会安全号码的列表 为了便于阅读 它们中有破折号 我想修改自动完成功能 以便如果我输入 123456789 或 123 45 6789 它将在自动完成功能中找到相同的
  • Eiffel 中的不可变类

    我正在尝试做一个不可变的POINT在埃菲尔铁塔上课 下面的代码定义了一个吗 这 NONE 的可访问性x and y田地就够了吗 我可以给类不变量写一些东西吗x x 或者我还能如何实现不变性 class POINT create make f
  • 如何在SQLAlchemy中获取游标

    我是 Python Flask 的新手 在我的项目中 我们使用以下代码创建数据库对象 app Flask name app config SQLALCHEMY DATABASE URI sqlite tmp test db db SQLAl
  • 找不到 jQuery 选择器时会发生什么?

    如果我通过了一项selector as a parameter到一个函数 selector is an object function selector selector trigger eventHere 显然 event如果select
  • 从套接字读取二进制数据

    我正在尝试连接到服务器 然后向其发送 HTTP 请求 在本例中为 GET 这个想法是请求一个文件 然后从服务器接收它 它应该适用于文本文件和二进制文件 例如 imgs 我对文本文件没有问题 它工作得很好 但我对二进制文件有一些麻烦 首先 我