通过套接字读取和写入字节数据包

2024-01-02

我想通过 Socket 将 Android 设备连接到外部设备。 Socket 连接外部设备成功。

现在,如果外部设备需要任何数据,则按照以下顺序将字节数据包数据的请求发送到套接字。如果外部设备接收数据正确,则发送字节数据作为响应。

参数:方法名(1 个字节)、有效负载长度(2 个字节)、有效负载(2 个字节)。

现在我的代码是...

         Socket socket = new Socket("local exteranl device ip", 5000);
if(socket.isConnected())    {
         int methodname = 5;
            int payload  = 2151;
            int payloadLength = 2;

            ByteBuffer buffer = ByteBuffer.allocate(3 + payloadLength); // 3 = for method name + length
            buffer.order(ByteOrder.BIG_ENDIAN); // Just to be explicit

            buffer.put((byte) methodname);
            buffer.putShort((short) payloadLength);
            buffer.putShort((short) payload);

            buffer.rewind();
            byte[] result = new byte[buffer.capacity()]; // Could also use result = buffer.array();
            buffer.get(result);

    DataOutputStream classOUTstream = new DataOutputStream(socket.getOutputStream());
    // socket is already connected
             classOUTstream.write(result);
             classOUTstream.flush();

     InputStream stream = socket.getInputStream();
     byte[] data = new byte[100];
     int count = stream.read(data);
}

上面的代码是Android的,我只知道java的基本概念。我正进入(状态-1 结果在计数中。

任何人都可以建议我或告诉我我的错误吗?


你正在以艰难的方式做这件事。摆脱ByteBuffer完全并使用所有方法DataOutputStream。它们都是大端字节序。我看不到任何错误,但显然您必须发送对等方不理解的内容,因此他正在关闭连接而不是发送回复。

Note: Socket.isConnected()在您测试它时不可能是错误的。

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

通过套接字读取和写入字节数据包 的相关文章

随机推荐

  • 来自数据库的 之间的 PHP eval() 代码

    我希望能够将 PHP 放入数据库并运行它 我必须这样做 因为我将页面布局存储在数据库中 并且每个页面布局彼此不同 但是在某些情况下 我想对某些页面使用动态内容 Assume query from db是从数据库返回的字符串 PHP 应该只
  • NDIS 和微型端口驱动程序

    我正在尝试使用 Visual Studio 2012 中提供的 WDK 工具修改以太网驱动程序 WDK 中提供的示例包括 微型端口适配器 和 NDIS 轻量级过滤器 等 我仍处于驱动程序编写的最初阶段 因此发现很难浏览代码 在 Visual
  • C++11 中的常量表达式中是否允许使用逗号运算符?

    在回答的过程中这个问题关于SO https stackoverflow com questions 16563114 are these null pointers or are they pointers to address 0 165
  • 使用端口 1433 的 Azure 输入端点被阻止?

    我正在运行一个 Windows Azure 辅助角色 该角色在端口 1433 上公开 WCF 服务 该端口也被定义为输入 TCP 端点
  • 自 SonarQube 5.2 起,批处理端不再支持任务

    我安装 SonarQube 5 2 和 Sonar runner 2 4 最新版本 我设法启动 SonarQube 但在尝试运行 Sonar runner 时出现以下错误 ERROR Unable to execute Sonar ERRO
  • 在devise 2.0中使用omniauth从facebook获取用户个人资料大图片

    我想从 Facebook 获取用户个人资料大图或普通图片 现在我使用以下代码从用户个人资料图片中获取方形版本 image gt access token info image http graph facebook com id pictu
  • 返回布尔值的 Java 方法的命名约定

    我喜欢在其他语言中的方法 函数名称末尾使用问号 Java 不允许我这样做 作为解决方法 我还能如何在 Java 中命名返回布尔值的方法 使用is has should can在某些情况下 在方法前面听起来不错 有没有更好的方法来命名这些方法
  • 如何在 PostgresQL 10 中备份分区表

    是否可以使用 PostgreSQL 10 备份特定分区表 使用时 sudo pg dump Fc f home schema backup t schema partitioned table dbname 我只得到基表的骨架 没有任何值
  • 锁分割与锁条带化

    以下是 Joshua 的 Effective Java 的摘录 如果您确实在内部同步您的类 您可以使用各种 实现高并发的技术 如锁分割 锁 条带化和非阻塞并发控制 上面表明锁分割和锁条带是两种不同的技术 但是当我试图找出它们之间的区别时 我
  • 如何将 Django 应用程序部署到 (AWS) 域名?

    我只使用 Django 几个星期 刚刚学习了部署 我有一个 AWS EC2 实例 我可以将我的 Django 网站 应用程序部署到其中 即 如果我在浏览器中访问 IP 地址 我就可以访问我的网站 但是 我不知道如何将同一个网站部署到我在 A
  • std::initializer_list{x, y, z} (CTAD) 有效吗?

    当构建一个std initializer list u 明确地 模板参数 U 被推导 例如 使用类模板参数推导 CTAD 换句话说 我知道以下陈述是有效的 std initializer list u
  • Rails 资产管道:将资产包含在公共文件夹而不是资产文件夹中是否是一个好习惯?

    我一直在努力将 Google Analytics 添加到我的 Rails 4 应用程序中 请参阅这个帖子 https stackoverflow com q 31428864 5086345 我通过在新文件中添加 Google 提供的 Ja
  • Lucene - 这是巨大索引的正确答案吗?

    Lucene 是否能够索引每个 50K 的 500M 文本文档 对于单个术语搜索和 10 个术语搜索 此类索引的预期性能如何 我应该担心并直接转移到分布式索引环境吗 Saar 是的 Lucene 应该能够处理这个问题 根据以下文章 http
  • 从音频文件输入中检测人声

    我正在尝试实现自动录音功能 类似于会说话的汤姆应用程序 我使用以下代码从录音机读取输入并分析缓冲区 float totalAbsValue 0 0f short sample 0 numberOfReadBytes audioRecorde
  • Git LFS - 如何使用一个命令跟踪多种文件类型

    我在 Git LFS 网站和文档中看到此命令 git lfs track psd 我的项目中有多种文件类型 我想使用 LFS 进行跟踪 并且希望在未来的项目中跟踪所有这些相同的文件类型 我希望能够粘贴单个命令来跟踪所有这些扩展 这可能吗 经
  • C++ 字符串文字数据类型存储

    void f char c Hello World 字符串存储在哪里 它有什么属性呢 我只知道它是一个常数 还有什么 我可以从函数体内返回它吗 它与您的二进制文件一起打包 我所说的打包是指硬连线 所以是的 您可以返回它并在其他地方使用它 但
  • 访问 Jenkins 中的构建变更日志

    我一直在绞尽脑汁地试图找到一种方法 将 Jenkins 生成的更改列表 来自 SVN pull 包含到我们的 Testflight 笔记中 我正在使用 Testflight 插件 它有一个注释字段 但詹金斯似乎没有创建任何参数 令牌来嵌入该
  • Java 中的持久数据结构

    有谁知道关于在 Java 中创建和使用持久数据结构的库或至少一些研究吗 我并不是将持久性称为长期存储 而是将持久性称为不变性 请参阅维基百科条目 http en wikipedia org wiki Persistent data stru
  • ASP.NET Identity - 将用户 ID 主键默认类型从字符串更改为 int 以及使用自定义表名称时出错

    我正在使用 Microsoft AspNet Identity 2 0 0 beta1 和 Entity Framework 6 1 0 beta1 2014 年 2 月 11 日发布 当我尝试将用户 ID 主键的默认类型从字符串更改为 i
  • 通过套接字读取和写入字节数据包

    我想通过 Socket 将 Android 设备连接到外部设备 Socket 连接外部设备成功 现在 如果外部设备需要任何数据 则按照以下顺序将字节数据包数据的请求发送到套接字 如果外部设备接收数据正确 则发送字节数据作为响应 参数 方法名