c - 如何从文件中读取二进制数据,并通过 Ruby 套接字将其传输到执行按位运算的客户端?

标签 c ruby tcp binary-data

我目前正在用 Ruby 开发一个软件,该软件旨在从文件中读取二进制消息,然后通过 TCP 或 UDP 套接字将其传输到我的同事编写的 C 程序。在将这些二进制消息发送回我的程序以比较发送和接收的数据之前,该 C 程序必须能够对这些二进制消息执行按位运算。

我当前的问题与 Ruby 似乎将所有内容作为字符串处理的方式有关。我对这门语言比较陌生,不确定应该如何解决这个问题。

我主要关心的是确保二进制消息的内容在首次传输到 C 程序之前或期间不会发生任何更改。

如果您能提供任何帮助,我们将不胜感激。

谢谢, 马丁

最佳答案

Ruby 的 Class: IO是一个很好的起点。阅读第一部分,特别是 "b" 标志以及它与操作系统的关系。之后 readread_bytes 可能会有用。

回复:“Ruby 似乎将所有内容都作为字符串处理”。 Ruby 将文件视为从磁盘读取的字节序列。您告诉 Ruby 读取、处理和显示这些字节的方式决定了这些字节是文本行、某个数据库文件中的记录、图像还是声音文件。您可以使用面向数据的方法读取文本,然后转身并将数据视为字符串。您可以使用字符串读取方法读取“二进制”数据,然后将其聚合在内存中并将其视为字节。 Ruby 只是我们用来操作字节的工具,但我们才是决定这些字节含义的人。

关于c - 如何从文件中读取二进制数据,并通过 Ruby 套接字将其传输到执行按位运算的客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4210709/

相关文章:

c - C 中的 Sleep 函数使程序打印出奇怪的字符

c - 没有全局变量的 twalk

ruby-on-rails - 更新文件时如何在carrierwave中保持相同的文件名(在rails中)

java - Async Boost 写入 Java Socket - 传入字节数组有时部分为 0?

c# - C 和 C# 实现之间的 AES/CBC 加密差异

c - fscanf 没有将数据保存到结构中?

ruby - 运行 CouchRest.put() 时出错

mysql - 如何删除mysql数据库中的重复记录?

java - 摆脱 sun.rmi.transport.tcp.TCPTransport$AcceptLoop executeAcceptLoop 错误

networking - 封装TCP数据包