JAVA使用socket outputstream中碰到的问题

2023-10-26

今天在使用java的socket写网络通信,作为服务端向对端传送数据。

建立连接后,首先发4个字节的内容,存放文件大小,然后再发送文件正文内容

代码是这样写的

Socket client = new Socket("192.168.60.1", 9999);

OutputStream ops = client.getOutputStream();

InputStream ifs = new BufferedInputStream(new FileInputStream(pic_path));

client.setTcpNoDelay(true);

int fileSize = ifs.avaliable();    //获取文件大小

if (fileSize > 0) {

    //  ops .write(fileSize);     // 错误行

    byte bytes[] = new bye[4];   // 正确写法

    bytes[0] = (byte) (fileSize & 0xFF);   // 正确写法

    bytes[1] = (byte) ((fileSize >> 8) & 0xFF);   // 正确写法

    bytes[2] = (byte) ((fileSize >> 16) & 0xFF);   // 正确写法

    bytes[3] = (byte) ((fileSize >> 24) & 0xFF);   // 正确写法

    ops .write(bytes, 0, 4);     // 正确写法

    ops .flush();

    测试时使用 ifs.write写入int型的文件大小到socket输出流,通过tcpdump抓包发现只发出去第一个字节,通过将int型转换为4字节的byte数组发送,就没有问题。

    在这里记录下,以后java通信还是使用wirte中的数组形参的方法比较好

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

JAVA使用socket outputstream中碰到的问题 的相关文章

  • 如何将 ChromeDriver 包含在 JAR 中?

    我正在编写一个网络自动化程序 到目前为止 它使用 Selenium 的 FirefoxDriver 运行良好 但是 如果未安装 Firefox 我想让它使用 Chrome 我下载了 ChromeDriver 将其放入 Eclipse 项目的
  • Spring属性解密

    我们混合了一些尚未迁移到 spring boot 或 spring cloud 的遗留 Spring 应用程序以及 Spring Boot 应用程序 我正在创建一个 Spring 组件 如果属性值已加密且具有前缀 则该组件将在加载环境时自动
  • 使用java从奇怪但有效的url获取域

    我需要从此网址获取主机 android app com google android googlequicksearchbox Pub id siteID java net URL and java net URI无法处理它 问题在于 an
  • 无法使用 JMS 应用程序从 IBM MQ 获取响应

    我们使用 IBM MQ 以请求 回复方式与第三方进行通信 我们向他们发送请求 他们给我们答复 目前 我们都有一个简单的基于 Java 的本机 IBM MQ 应用程序 我们计划使用 spring jms 重写我们的代码 但是当使用 sprin
  • NotificationCompat v7 不适用于 Oreo 及更高版本的操作系统

    我遇到了麻烦NotificationCompat v7 on android 8 9 在所有 Android 版本上显示通知的最佳方式是什么 调试日志 android app RemoteServiceException Bad notif
  • 停放正在使用的线程

    我正在尝试线程停放并决定构建某种服务 它是这样的 public class TestService private static final Logger logger LoggerFactory getLogger TestService
  • 如何在 CDI 中动态创建实例

    假设我有一个汽车课程 在我的代码中我想创建 10 辆汽车 汽车类有一些 Inject带注释的依赖项 做到这一点的最佳方法是什么 CDI 有一个Provider我可以用它来创建汽车的界面 Inject Provider
  • 在 java 中返回多个原始对象。不推荐?

    我刚刚开始学习 Java 的 OOP 编程 我已经用 C 编写过一些程序 而我在 Java 中最怀念的事情之一就是可以返回多个值 确实 C 函数仅严格返回一个变量 但我们可以使用按引用参数返回更多变量 相反 在Java中我们不能做这样的事情
  • 简要说明:JDBC 是如何工作的? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 两个或多个(哈希)映射的并集

    我有两个包含相同类型对象的地图 Map
  • 使用 swagger 或任何其他工具生成 Rest API 文档

    我正在寻找一种方法来记录我的 Rest API 我的服务器是 Tomcat Spring 服务器 Rest API 是使用 Jenkins 实现的 Swagger 似乎是一个非常酷的解决方案 但我不知道如何在我的代码中使用它 我正在寻找创建
  • 在 Kotlin 中使用 Room 的 @ForeignKey 作为 @Entity 参数

    我遇到了一个房间tutorial https android jlelse eu android architecture components room relationships bf473510c14a这利用了 PrimaryKey类
  • 我想向我的销售点的用户授予特权,但我不知道如何做,有什么建议吗?

    我有一个问题 我有一个用netBeans制作的销售点系统 2个用户可以在我的系统中注册 管理员 和 供应商 系统中有几个模块 包括 Inventario 模块允许您在数据库中输入 修改 删除和搜索文章 问题是我希望只有管理员有权限进入该模块
  • SpringFramework:预期有一个匹配的 bean,但发现了 2 个

    我正在构建一个使用 SpringFramework 从 MongoDB 读取数据的项目 其结构为存储库 and Service如下 Repository Interfaces I
  • Hibernate @Enumerated 似乎被忽略

    我有课Person使用带有枚举的注释进行映射Sex指的是性别 是男性还是女性 让我们来看看 Entity Table name PERSON public class Person Id GeneratedValue strategy Ge
  • 应用程序可以在 WIFI 上运行,但不能在 3G 上运行

    有两项活动 Main and Detail活动 Main Activity基本上是一个GridView Detail Activity基本上显示了单击项目的详细信息 我正在传递所选项目的 id pid 来自Main to the Detai
  • 更广泛的递归/泛型问题

    根据提出的问题和回答的问题here https stackoverflow com questions 6650532 recursive java generics between two classes 我有第二个 更复杂的一个 至少在
  • Java 和 C/C++ 之间进程间通信的最快(低延迟)方法

    我有一个Java应用程序 通过TCP套接字连接到用C C 开发的 服务器 应用程序和服务器都在同一台机器 Solaris 机器 上运行 但我们最终正在考虑迁移到 Linux 交换的数据类型是简单消息 登录 登录ACK 然后客户端请求某些内容
  • Java 中的内存管理

    如何在Java中手动删除对象 有没有类似的方法obj delete or obj kill 没有真正的办法 Java有一个特殊的垃圾收集器这会为你做到这一点 一旦您的对象没有任何对它的引用 它就会在某个时候被垃圾收集器拾取并销毁 From
  • 解析 ksoap2 响应

    我使用 ksoap2 lib 从 Android 客户端与 SOAP Web 服务进行通信 ksoap 团队做得很好 但问题是 没有任何好的例子如何在不同方面正确使用它 例如 我得到肥皂响应以下数据 anyType StatusSettin

随机推荐

  • REDIS 4 集群搭建

    REDIS 4 集群搭建 1 下载 redis wget http download redis io releases redis 4 0 10 tar gz tar xzf redis 4 0 10 tar gz cd redis 4
  • [学习笔记]Centos7虚拟机网络重启失败

    好久没用虚拟机了 这次学习的时候打开之前安装好的Centos7发现又连不了网了 在网上跟着教程配置好IP之后重启网络服务 执行service network restart命令 出现了错误 Restarting network via sy
  • Install ModelSim on Linux

    To use ModelSim on Linux is quite difficult There is only exe file for installing ModelSim on Windows on the official we
  • php的phpstoem代码编辑器的快捷键,比较常用的归纳

    1 CTRL SHIFT N 全局搜索文件 优先文件名匹配的文件 2 CTRL R 当前窗口替换文本 3 CTRL E 最近打开的文件 4 F5 复制文件 文件夹 5 CTRL C 复制 CTRL V 粘贴 CTRL X 剪切 删除行 Ct
  • Linux 面试题-(腾讯,百度,美团,滴滴)

    Linux 面试题 腾讯 百度 美团 滴滴 分析日志t log 访问量 将各个ip 地址截取 并统计出现次数 并按从大到小排序 腾讯 http 192 168 200 10 index1 html http 192 168 200 10 i
  • 用两成数据也能训练出十成功力的模型,Jina Embeddings 这么做

    句向量 Sentence Embeddings 模型在多模态人工智能领域起着至关重要的作用 它通过将句子编码为固定长度的向量表示 将语义信息转化为机器可以处理的形式 在 文本分类 信息检索和相似度计算 等多个方面有着广泛应用 然而长期以来
  • unity 动画 - Animator 的使用

    创建 animator 文件 命名为 nanzhanshi2 controller 双击打开文件 默认三个 State AnyState Entry Exit Parameters 有四种类型的参数 Float Int Bool Trigg
  • cocos控制相机旋转

    import decorator Component Event EventMouse find Input input Node v3 Vec3 from cc const ccclass property decorator cccla
  • 1.Cherry Pick与Create Patch的区别

    Cherry Pick与Create Patch的区别 结论 实验 场景1 应用时无冲突 场景2 应用时产生冲突 使用cherry pick 使用patch 场景3 产生冲突 并且有其他文件的变更 原理 结论 1 应用无冲突时cherry
  • Java全栈体系路线(总结不易,持续更新中)

    文章目录 Java全栈工程师 font color orange Java基础 基础语法 面向对象 工具类 集合框架 序列化 反射机制 注解 文件处理 设计模式 视频教程 文档教程 练习题 面试题 GUI模块 多线程模块 Socket模块
  • VS2019修改代码后必须重新生成解决方案

    这是因为没有配置好 在工具 gt 选项 gt 生成和运行 gt 运行时 项目过期 在这里选择始终生成 这样的话就可以在修改代码之后自动重新生成解决方案
  • 钉钉环境下H5开发微应用遇到的问题和BUG(持续更新)

    项目类型 CRM 项目描述 微应用是钉钉为连接企业办公打造的移动入口 通过微应用你可以将企业的业务审批 内部系统 生成 协作 管理 上下游沟通连接到钉钉 该项目是在钉钉的基础上开发一个供本公司销售使用的客户管理系统 包含了客户 项目 订单
  • mysql实现行转列作为临时表、以及字符分割行转列

    1 需求 实现两个日期段转换为具体的日期天数 2022 10 23至2022 10 26得到一张2022 10 23 2022 10 24 2022 10 25 2022 10 26的临时表 SELECT DATE FORMAT DATE
  • vivado关联第三方编辑器

    前言 可忽略不看 绑定vivado的第三方编辑器的时候 本人曾经看过一些教程 但是对于路径的设置看的一头雾水 所以就把路径构成记录了下来 希望对你有帮助 需要关键在于step6中的路径格式 路径的格式简单分为三个部分 需要绑定的编辑器的路径
  • java中匿名内部类的匿名构造函数是怎么用的

    java中匿名内部类的匿名构造函数是怎么用的 下面的例子说明匿名内部类的匿名构造函数的用法 例2 7 2 0 interface FigureMark to win void whoAmI public class Test public
  • 刀片服务器切换显示,刀片机服务器切换

    刀片机服务器切换 内容精选 换一换 当保护组的生产站点发生故障时 将保护组的生产站点切到当前的容灾站点 即另一端AZ 启用当前容灾站点的云硬盘以及云服务器等资源 故障切换完成之后 保护组的当前生产站点变成故障切换发生之前的容灾站点 且生产站
  • 大数据开源框架之HBase编程实践

    HBase的安装部署请看 30条消息 大数据开源框架环境搭建 五 Hbase完全分布式集群的安装部署 木子一个Lee的博客 CSDN博客 目录 任务1 用HBase提供的HBase Shell命令实现以下指定功能 1 列出HBase所有的表
  • 我的创作纪念日

    机缘 我热爱编程 热爱解决问题 也享受在解决问题的过程中遇到的挑战 在大学的学习过程中 我发现将学习过程和解决问题的过程记录下来能够帮助我更深入地理解知识和技术 同时也为未来遇到类似问题提供了参考 我开始将我的学习笔记分享给同学们 收到了非
  • 二维矩形装箱问题

    装箱问题 是个NP问题 至于装箱问题到底是个什么东西 可以看看百度文档http wenku baidu com view f6e7f80590c69ec3d5bb755f html 其实我没看 研究二维矩形装箱问题 是因为需要将小图拼成大图
  • JAVA使用socket outputstream中碰到的问题

    今天在使用java的socket写网络通信 作为服务端向对端传送数据 建立连接后 首先发4个字节的内容 存放文件大小 然后再发送文件正文内容 代码是这样写的 Socket client new Socket 192 168 60 1 999