如何向服务器套接字写入字节

2023-12-06

我正在编写一个java套接字程序来从服务器读取数据,我无法控制服务器,下面是约定的协议,

  • 2字节:幻数
  • 2字节:数据长度
  • N 字节:ASCII 字符串数据有效负载
  • 幻数和数据长度的大端序

例如:如果我的请求是“command/1/getuserlist”,如何构造符合上述协议的请求并将响应读回列表

我是套接字编程的新手,不知道如何构建我的请求并读回响应。

有人可以指导我如何构建请求并读取响应


根据规范,您必须按以下方式构建一个形状的数据包

| 2 | 2 | N ........ |

现在这可能非常简单,并且有多种方法可以做到这一点,我建议您使用一种:

import java.nio.ByteBuffer;
import java.nio.ByteOrder;

static byte[] buildPacket(int magicNumber, String payload) throws UnsupportedEncodingException
{
  // 4 bytes for header + payload
  ByteBuffer buffer = ByteBuffer.allocate(2 + 2 + payload.length());
  // we set that we want big endian numbers
  buffer.order(ByteOrder.BIG_ENDIAN);

  buffer.putShort((short)magicNumber);
  buffer.putShort((short)payload.length());
  buffer.put(payload.getBytes("US-ASCII"));
  return buffer.array();
}

public static void main (String[] args) throws java.lang.Exception
{
    try
    {
        byte[] bytes = buildPacket(0xFF10, "foobar");
        for (byte b : bytes)
          System.out.printf("0x%02X ", b);
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
}

请注意,如果您声明该方法接受short直接幻数,您将无法传递字面幻数> 32767因为short是用 Java 签名的。

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

如何向服务器套接字写入字节 的相关文章

  • CompletableFuture:whenCompleteAsync() 不允许我重新抛出异常

    我是 CompletableFuture 世界的新手 我正在尝试做一些负面测试 以允许我故意抛出异常的方式 该异常将决定通过 失败 这是代码片段 protected CompletableFuture
  • SWT:如何进行高质量图像调整大小

    我的应用程序需要调整 ImageData 的大小 不幸的是 我还没有通过 GC 开启抗锯齿和高插值 或 ImageData scaledTo 获得我想要的结果 生成的图像质量太低 无法接受 进行高质量 ImageData 调整大小的最佳方法
  • cygwin有java sdk吗?

    cygwin有java sdk吗 如果有一个使用 cygwin 文件系统和 X windows 进行显示的本机 cygwin 实现 那就太好了 不幸的是我不知道这样的版本 我认为移植 OpenJDK 也需要付出很大的努力 但我还没有尝试过
  • JTree 避免重新加载后崩溃

    我正在尝试找到解决崩溃问题的方法JTree重新加载后 情况 JTree Office A Office A 1 Office A 1 1 Office A 1 2 Office B Office B 1 Office B 1 1 Offic
  • 视频文件转换/转码 Google App Engine

    我想启动一个云计算项目 其简单任务是 接收上传的视频文件 对它们进行一些转码 转换 允许用户下载 流式传输生成的文件 我刚在想ffmpeg作为集成在的外部命令行工具Java Google App engine Application 由于很
  • 如何通过两跳 SSH 隧道使用 JProfiler

    我正在尝试将 JProfiler 连接到在我将调用的服务器上运行的 JVMremote 该服务器只能从我的工作站访问 local 通过我将调用的另一台服务器middle 我的计划是将 JProfiler 连接到remote是这样的 安装 J
  • Java JNDI 名称 java:/

    我正在遵循教程 https docs oracle com javase tutorial jndi index html https docs oracle com javase tutorial jndi index html 我的冒险
  • Spring批量写入器限制

    我正在工作 Spring Batch 项目 从数据库读取记录然后写入rabbitmq 然后发送到HTTP消息网关 网关有150TPS我需要将我的应用程序限制为 150TPS 有没有办法带弹簧批的油门或者还有其他更好的方法吗 你能行的 在 S
  • 如何将 ArrayList 中的所有值相加或转换为 ArrayList

    我试图将 ArrayList 中的所有值相加 但没有任何方法可以让我得到总和 我必须找到从文本文件中提取的数字的平均值 public static void main String args throws IOException File
  • LibGDX 闪烁

    我已经使用 LibGDX UI 设置来启动一个项目 我在实现 ApplicationListener 中唯一拥有的是 public void create setScreen new LoadingScreen this 这应该会触发 Lo
  • 外部化 Spring Security 配置?

    我有一个 Web 应用程序 可以使用 Spring Security 的几种不同配置 但是 这些差异配置都是在我的 applicationContext 配置文件中设置的 因此 为了在客户站点调整这些内容 必须在 WAR 文件内修改这些内容
  • 声纳要求将这一领域定为最终目标

    我的程序中有以下代码 在与 Maven 集成后 我正在运行 SonarQube 5 对其进行代码质量检查 我面临这个错误 将此 public static processStatus 字段设为最终字段 将此 public static pr
  • Poi:从 xlsm 打开 Excel 文件后将其保存为 xlsx

    我正在编写一个java程序 它打开一个用户定义的excel文件 用数据填充它 然后将其保存在用户指定的路径 文件名和扩展名下 即使输入文件是 xlsm 也应该可以声明输出保存为 xlsx 但实际上是不可能的 如果我尝试使用下面的代码 打开文
  • 在仔细锁定但不受信任的代码上使用 Thread.stop()

    我知道Thread stop 已被弃用 并且有充分的理由 它通常不安全 但这并不意味着它是never安全 据我所知 在我想要使用它的上下文中它是安全的 而且 据我所知 我别无选择 上下文是一个两人策略游戏的第三方插件 以国际象棋为例 第三方
  • SQLite 64位整数在jooq中被识别为int

    我有一个与 jOOQ 一起使用的 SQLite 数据库 当我使用 jOOQ 的代码生成工具时 它会按预期构建所有表和记录类 然而 所有的 SQLiteINTEGER列变成java lang Integer生成的代码中的字段 问题是 SQLi
  • 使用 JavaFX 将可执行 Jar 限制为一个窗口

    我正在通过构建 JavaFX 应用程序E fx 剪辑 and Java场景生成器 基本功能是登录窗口 登录后 将打开新窗口 然后登录窗口消失 目前还处于原型阶段 用完eclipse后 我想要的功能都有了 启动时显示登录窗口 代码如下 Ove
  • 抛出 UnsupportedOperationException

    因此其中一种方法的描述如下 public BasicLinkedList addToFront T data 该操作无效 对于排序列表 将生成 UnsupportedOperationException 使用消息 排序列表的操作无效 我的代
  • 使用mapstruct映射不同类型列表的元素

    我们正在映射一个对象 该对象具有一个对象列表 这些对象都实现了父接口 但可能具有不同的实现 但当我们映射列表时 似乎只有来自 ParentClass 的值被映射 而不是来自子类的值 但直接映射子进程就可以了 public class Par
  • 我的代码线程不安全吗?

    我编写了代码来理解 CyclicBarrier 我的应用程序模拟选举 每轮选出得票少的候选人 该候选人从竞争中淘汰以获得胜利 source class ElectoralCommission public volatile boolean
  • 将Json字符串映射到java中的map或hashmap字段

    假设我从服务器返回了以下 JSON 字符串 response imageInstances one id 1 url ONE two id 2 url TWO 杰克逊代码大厦 JsonProperty 我怎样才能得到HashMap对象出来了

随机推荐

  • 如何在Spacy中为OOV术语指定词向量?

    我有一个预训练的 word2vec 模型 我将其加载到spacy对新单词进行矢量化 给定我执行的新文本nlp hi vector获取单词 hi 的向量 最终 需要对一个新单词进行向量化 该新单词不存在于我的预训练模型的词汇表中 在这种情况下
  • ASP.NET4 画布应用程序:回发导致意外重定向

    我正在使用工具包的 build 5 06 我才刚刚开始 尝试做一些简单的事情 让回发工作 但是 当用户单击回发按钮时 浏览器会快速重定向到某个内容 我认为是 uiserver 然后再次重定向到 facebookredirect axd 最后
  • Google App Engine 原子部分?

    假设您从数据存储中检索一组记录 类似于 select from MyClass whereserved false 我如何确保另一个用户没有设置保留仍然为假 我查看了事务文档 并对谷歌的解决方案感到震惊 该解决方案是捕获异常并在循环中重试
  • 使用 Google Identity Services (GIS) JavaScript SDK,如何扩展会话?

    per https developers google com identity oauth2 web reference js reference 似乎没有一个refresh token流动 过期时间是1小时 所以并不可怕 但我想在用户仍
  • Clearcase 和 java 进程:更改视图不适用

    我有一个简单的应用程序 它接收用户输入的 CC 流名称 并假设从该流存储库返回特定文件的内容 我尝试使用一个简单的 shell 脚本来执行此操作 用户输入流名称 java接收流名称 运行一个进程 该进程运行一个脚本 myccscript s
  • “无法找到主类”

    我尝试从命令提示符运行示例 Java 应用程序 但收到以下错误 Exception in thread main java lang NoClassDefFoundError com badlogic gdx helloworld Hell
  • Objective-C 序列化复杂对象列表

    我有一个类列表 如下所示 interface AISlideItem NSObject NSString PlaceHolderName NSUInteger PlaceHolderID property nonatomic strong
  • OpenJPA 与 Glassfish 配合得很好吗?

    有人成功地将 OpenJPA 与 Glassfish 结合使用吗 我正在尝试将 OpenJPA 2 1 与 Glassfish 3 1 开源一起使用 我已按照此处的说明将两者集成 gt http weblogs java net blog
  • 如何在编译时确定元组元素的偏移量?

    我需要确定元组中某个索引元素的偏移量compile time 我尝试了这个功能 复制自https stackoverflow com a 55071840 225186 接近尾声 template
  • 对文件夹中的所有文件执行命令

    我想对目录中的所有文件运行命令 对于 c conversion ajt 中的 1 执行以下操作转换命令 1 2 但是 我需要一个与输入相同但具有不同文件扩展名的输出文件名 asciitojt exe filename1 ajt filena
  • 在 mutate() 中使用列函数的变量

    我如何使用变量来代替列名在 dplyr 字符串中 举个例子 我想向 iris 数据集添加一列 称为 sum 它是 Sepal Length 和 Sepal Width 的总和 简而言之 我想要以下代码的工作版本 x Sepal Length
  • Python str() 双引号字符串

    我知道这个问题听起来很幼稚 但我还是坚持下去 我正在使用 jquery 自动完成 结果发现它需要 data1 data2 形式的列表 我正在从 json 文件获取数据并且 data json load fobj content data s
  • PHP 作曲家 HTTPS 错误 1416F086。证书验证失败

    我突然在使用 PHP Composer 时遇到了这个令人讨厌的 HTTPS 错误 而 Composer 曾经在我的机器上工作 Github 和 stackoverflow 上已经有存在相同问题的主题 我尝试了所有推荐的东西 但没有任何对我有
  • C# - 内部属性在快速观察中“可读”但不使用反射?

    我看到 快速监视 窗口可以访问所有属性 无论库中类的访问限制 内部 受保护 私有 如何 即使在完全不同的应用程序 库和命名空间中引用该库也是如此 然而我没有找到使用 反射 访问这些的方法 我特别尝试 读取 注意 只是读取 程序集的内部属性
  • 字符串文字中的转义状态作为“String#tr”的参数

    对于作为参数的单引号字符串文字中的反斜杠的转义状态 对我来说有些神秘String tr 你能解释一下下面三个例子之间的对比吗 我尤其不明白第二个 为了避免复杂化 我正在使用 d 在这里 当用双引号转义时不会改变含义 d d tr x gt
  • 使用反应式扩展观察传入的 websocket 消息?

    我想使用 linq 来处理通过 websocket 连接接收到的事件 这是我到目前为止所拥有的 private static void Main string WsEndpoint wss push planetside2 com stre
  • 服务中的可运行对象是否在 UI 线程上运行

    在 Android 中 当我在服务内创建一个可运行对象并运行它时 虽然我意识到它在自己的线程中运行 但该线程是否是 UI 线程的一部分 换句话说 如果runnable执行了一个很长的过程 会影响UI吗 EDIT private class
  • 如何根据行中的文本单击表格中的链接

    使用 page object 和 watir webdriver 如何根据行文本单击表中的链接 如下所示 该表包含 3 行 第一列中有名称 右侧列中有相应的详细信息链接 仪表板 详细信息 示例 详细信息 等等 div class basic
  • Google 地图:为什么我会收到referer-not-allowed-map-error? [关闭]

    Closed 这个问题需要调试细节 目前不接受答案 我有一个 Android 应用程序 在 Play 商店之外 它使用带有 Javascript 的 HTML 页面来调用 Google 地图 我得到一个referer not allowed
  • 如何向服务器套接字写入字节

    我正在编写一个java套接字程序来从服务器读取数据 我无法控制服务器 下面是约定的协议 2字节 幻数 2字节 数据长度 N 字节 ASCII 字符串数据有效负载 幻数和数据长度的大端序 例如 如果我的请求是 command 1 getuse