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 套接字发送/接收缓冲区类型 的相关文章

  • std::cout 和 std::wcout 有什么区别?

    在c 中 有什么区别std cout and std wcout 它们都控制流缓冲区的输出或将内容打印到控制台 或者它们只是相似吗 它们作用于不同的字符类型 std cout uses char作为字符类型 std wcout uses w
  • 使用Physics.Raycast 和Physics2D.Raycast 检测对象上的点击

    我的场景中有一个空的游戏对象 带有 2D 组件盒碰撞器 我将脚本附加到该游戏对象 void OnMouseDown Debug Log clic 但是当我点击我的游戏对象时 没有任何效果 你有什么想法 如何检测我的盒子碰撞器上的点击 使用光
  • C++ 中本地类中的静态成员变量?

    我知道我们不能宣布static本地类中的成员变量 但其原因尚不清楚 那么请问有人可以解释一下吗 另外 为什么我们不能访问非static函数内部定义的变量 内部已经定义了局部类 直接在局部类成员函数中 在下面给出的代码中 int main i
  • Bash:将输出传输到后台进程?

    我想将一个进程放入后台 然后多次将数据传递给它 例如 cat The command I want to write into cat pid Getting the process id of the cat process echo h
  • 推导指南中的引用和值之间的差异

    考虑类型A template
  • 将内置类型转换为向量

    我的 TcpClient 类接受vector
  • 存储来自其他程序的事件

    我想将其他应用程序的事件存储在我自己的应用程序中 事件示例 打开 最小化 Word 或打开文件时 这样的事可能吗 运行程序 http msdn microsoft com en us library ms813609 aspx and 打开
  • 无法在 Windows 运行时组件库的 UserControl 中创建依赖项属性

    我想在用户控件内创建数据可绑定属性 这个用户控件包含一个 Windows 运行时组件 项目 我使用下面的代码来创建属性 public MyItem CurrentItem get return MyItem GetValue Current
  • 如何在 C# 中定义文本框数组?

    您好 当我在 Windows 申请表上创建文本框时 我无法将其命名为 box 0 box 1 等 我这样做的目的是因为我想循环使用它们 其实我发现TextBox array firstTextBox secondTextBox 也有效
  • ASP.NET:获取自 1970 年 1 月 1 日以来的毫秒数

    我有一个 ASP NET VB NET 日期 我试图获取自 1970 年 1 月 1 日以来的毫秒数 我尝试在 MSDN 中寻找方法 但找不到任何东西 有谁知道如何做到这一点 从 NET 4 6 开始 该方法ToUnixTimeMillis
  • 将 Excel 导入到 Datagridview

    我使用此代码打开 Excel 文件并将其保存在 DataGridView 中 string name Items string constr Provider Microsoft Jet OLEDB 4 0 Data Source Dial
  • 未定义的行为或误报

    我 基本上 在野外遇到过以下情况 x x 5 显然 它可以在早期版本的 gcc 下编译干净 在 gcc 4 5 1 下生成警告 据我所知 警告是由 Wsequence point 生成的 所以我的问题是 这是否违反了标准中关于在序列点之间操
  • 使用 Moq 使用内部构造函数模拟类型

    我正在尝试模拟 Microsoft Sync Framework 中的一个类 它只有一个内部构造函数 当我尝试以下操作时 var fullEnumerationContextMock new Mock
  • 如何使用 Mongodb C# 驱动程序连接多个集合

    我需要将 3 个集合与多个集合合并在一起 lookup我在 C 驱动程序中尝试过 它允许我 lookup用户采集但无法执行秒 lookup用于设置集合 有人可以帮忙吗 db Transactions aggregate lookup fro
  • std::async 与重载函数

    可能的重复 std bind 重载解析 https stackoverflow com questions 4159487 stdbind overload resolution 考虑以下 C 示例 class A public int f
  • 如何从main方法调用业务对象类?

    我已将代码分为业务对象 访问层 如下所示 void Main Business object public class ExpenseBO public void MakeExpense ExpensePayload payload var
  • C++ 密码屏蔽

    我正在编写一个代码来接收密码输入 下面是我的代码 程序运行良好 但问题是除了数字和字母字符之外的其他键也被读取 例如删除 插入等 我知道如何避免它吗 特q string pw char c while c 13 Loop until Ent
  • Process.Start() 方法在什么情况下返回 false?

    From MSDN https msdn microsoft com en us library e8zac0ca v vs 110 aspx 返回值 true 表示有新的进程资源 开始了 如果由 FileName 成员指定的进程资源 St
  • Server.MapPath - 给定的物理路径,预期的虚拟路径

    我正在使用这行代码 var files Directory GetFiles Server MapPath E ftproot sales 在文件夹中查找文件 但是我收到错误消息说 给定物理路径但虚拟路径 预期的 我对在 C 中使用 Sys
  • 英特尔 Pin 与 C++14

    问题 我有一些关于在 C 14 或其他 C 版本中使用英特尔 Pin 的问题 使用较新版本从较旧的 C 编译代码很少会出现任何问题 但由于 Intel Pin 是操作指令级别的 如果我使用 C 11 或 C 14 编译它 是否会出现任何不良

随机推荐

  • 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 的套接字指南 所使用的示例用于发送 接收字符串 现在我想在一条消息中发送 接收不同类型的数据 例如 假设在一条消息