C 套接字发送/接收缓冲区类型

2024-01-05

我正在使用unix套接字,当我的缓冲区是char类型时(即发送和接收字符串),我可以发送()和recv()数据。我使用了 Beej 的套接字指南,所使用的示例用于发送/接收字符串。

现在我想在一条消息中发送/接收不同类型的数据。
例如,假设在一条消息中我想发送一个整数、一个字符串、一个双精度值和一个浮点值。 我该怎么做呢?更具体地说,我的消息“缓冲区”应该是什么类型?

发送和接收的原型:

int recv (int socket, void *buffer, size_t size, int flags)
int send (int socket, void *buffer, size_t size, int flags)

我对 C/C++ 和指针没有太多经验,所以这可能是一个菜鸟问题。

如果有人能引导我走向正确的方向,我将非常感激。 谢谢


除非您计划发送大量数据(数千字节)并且经常发送(每秒几个数据包),否则我建议您将数据转换为字符串(也称为“序列化数据”)并以这种方式传递。它有几个好处:

  1. 它是便携式的 - 无论尺寸如何,都可以使用int or float or double是 - 或者结构中字段之间的填充是什么。
  2. 调试起来很方便(看数据就知道对错了)
  3. 发送/接收机器的字节顺序并不重要。

另一方面,发送二进制数据很复杂,因为您需要担心数据字段的各个大小及其内部表示(字节顺序、如何double以二进制表示,结构内数据字段的填充,不能传递指针等)。唯一的好处是二进制数据更加紧凑。但只有当您有很多千字节和/或每秒发送大量数据包时,这才重要。

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

C 套接字发送/接收缓冲区类型 的相关文章

随机推荐

  • Delphi 7 - 保存到特定的 .INI 文件名

    我修改了MasterMan82的TIniFile代码 https stackoverflow com a 17631509从 读取多个值并将其写入 TEdit TComboBox 和 TMemo 请原谅我的模糊问题 我的英语不好 所以 我的
  • WebSockets JSR 356 Spring 集成 @ServerEndpoint

    问题 ServerEndpoint 类中的 Autowired beans 为 null 我怎样才能确保下面这个WebSocketController类将被注入bean 也就是说我怎样才能让它由Spring管理 我可以连接到 websock
  • 输入按键事件在数字输入字段上不起作用?

    我用这两个属性创建了两个 EditText android digits 0123456789 android inputType numberDecimal 我使用硬件键盘 当我执行 Enter 键时 焦点控制不会从一个视图转移到下一个视
  • Intellij 和 Maven 的 java.lang.NoClassDefFoundError

    我正在使用 Maven 3 0 5 和 Intellij 14 0 2 并且 Maven 没有在我的项目的 calsspath 中复制所需的 Jars 因此我手动复制它并尝试执行我的项目的主类 它引发了以下错误 java lang NoCl
  • 使用 JDK 8 编译泛型方法时发生损坏

    我有一些带有类的遗留代码Box放置和获取Serializable数据转化为Map 运行良好Oracle JRE 1 8 Update 102当编译时Oracle JDK 1 7 Update 80 但是当我编译它时它无法正常运行Oracle
  • 从 header() 获取 PHP 内容类型

    出于 安全原因 我需要获取 PHP 的内容类型 例如 如果您使用了该函数header Content type text html charset utf 8 如何在将来执行时接收内容类型 text html 和字符集 utf 8 分别地
  • 使用 jCIFS 流文件进行 Android ServerSocket 编程

    我遇到了一些问题 我已经问过很多次了 但我想我现在更近了一步 所以希望有人可以帮助我解决剩下的问题 我之前的问题 从 Android 连接到 NAS 设备 https stackoverflow com questions 8583277
  • 多态匿名函数类型别名

    命名的类型声明之间似乎存在细微的差别function 语法与匿名函数语法 type F
  • 使用 REST 服务从 Javascript 注册 Azure 通知中心失败

    我正在尝试通过在 Web 视图主机 Phonegap Intel XDK 中运行的 html javascript 代码在 Azure 通知中心上进行注册 没有可用的客户端库 因此我尝试使用 REST API 文档 我有以下 JavaScr
  • Stripe 货币 - 所有金额均以美分/百分之一为单位,还是取决于货币?

    我目前正在编写代码以从不同的支付处理器迁移到 Stripe 我知道当货币是美元时 stripe 使用美分 所以条纹 1000 美元 10 00 美元 欧元也是如此 我假设 stripe 1000 EUR 10 00 但日元呢 100 日元大
  • 如何显示微调器的图标并单击打开列表

    我想显示微调器的图标 然后单击打开突出显示所选位置的列表 这是我在微调器中添加项目的方法 public void addItemsOnSpinner try List
  • Python - 当包具有相同名称时从文件导入

    当我开始我的Python项目时 我做了一些愚蠢的事情 我将我的主文件命名为project py 并将一堆逻辑存储在一个也称为project的包中 这是目录结构 project py project other files 问题是 现在我需要
  • WebRTC:匹配最近的同行

    给定一个公共 IP 地址 对等点 A 和许多其他公共 IP 地址 IPv4 和 IPv6 地址的混合 列表 将对等点 A 的 IP 地址匹配的最简单方法是什么 n最近的对等点 而无需让对等点手动相互 ping 通以进行延迟基准测试 我认为使
  • 在 Phonegap 应用程序中获取 Wordpress 帖子时出现 Access-Control-Allow-Origin 错误

    希望有人可以帮助我在phonegap中开发移动应用程序时解决以下问题 我正在尝试从 WordPress 安装中读取帖子 但是当我在 chrome 上运行我的 index html 页面时出现此错误 XMLHttpRequest 无法加载 O
  • 如何通过点击按钮隐藏div?

    在我的 angular js 学习项目中 我想隐藏一个 div 并在单击按钮时显示另一个 div 在此代码中 我希望第一个 div 在单击时隐藏 甚至被销毁 并显示第二个 div 基本上我想要在我的应用程序中从第 1 页转到第 2 页的用户
  • 尝试在powershell中结合替换和新项目

    我有一个任务要更改目录中的一些配置文件 需要更改的文件有7个 全部以 Monitoring Tran xx 开头 这些文件中有某些值 TransactionID 01 AgreedResponseTime 500 SearchProfile
  • 使用 PHPstorm 7 文件观察器将 SCSS / SASS 转换为特殊文件夹中的 CSS

    我使用 PHPstorm 6 并且我的 SCSS 文件被编译到 CSS 文件夹中 所以我有 css main css img js scss main scss variables scss Hier are my definitions
  • 如何找到具有相同子节点的节点

    我有以下 xml 请注意 节点 n1 和 n3 具有相同的子节点 顺序可以不同 如何编写 XSL 转换来识别此类节点
  • 将函数传递给模板组件

    是否可以将函数传递给stencilJs成分 就像是 Prop okFunc gt void 我有一个模态 想要动态调用传递的函数Ok在模态页脚中单击按钮 就像onClick在普通的 HTML 按钮上 是的你可以 这只是正常现象 Prop 声
  • C 套接字发送/接收缓冲区类型

    我正在使用unix套接字 当我的缓冲区是char类型时 即发送和接收字符串 我可以发送 和recv 数据 我使用了 Beej 的套接字指南 所使用的示例用于发送 接收字符串 现在我想在一条消息中发送 接收不同类型的数据 例如 假设在一条消息