Unix域SOCK_DGRAM和SOCK_SEQPACKET之间的区别?

2024-04-22

根据 Unix 套接字的 Linux 手册页,“UNIX 域中的有效套接字类型是 . . . SOCK_DGRAM,对于保留消息边界的面向数据报的套接字(与大多数 UNIX 实现一样,UNIX 域数据报套接字始终可靠且不可靠)不重新排序数据报);以及(自 Linux 2.6.4 起)SOCK_SEQPACKET,用于面向连接的排序数据包套接字,保留消息边界,并按照消息发送的顺序传递消息。” (http://man7.org/linux/man-pages/man7/unix.7.html http://man7.org/linux/man-pages/man7/unix.7.html).

我认为“始终可靠并且不会重新排序数据报”与“按照发送消息的顺序传递消息”相同。

SOCK_DGRAM 和 SOCK_SEQPACKET 之间的实际区别是什么?


在 UNIX 域套接字的上下文中,两者之间的主要区别是“面向数据报”与“面向连接”。

在 SOCK_DGRAM 的情况下,您不创建连接(例如到服务器),您只需将数据包发送到服务器套接字。如果服务器需要回复,您需要创建自己的套接字,让服务器知道这个套接字,然后服务器可以向它发送回复。如果您确实需要连接,则非常不方便,但当您只需要单向通信(即发送一些通知)时,这可能很有用。

当您需要面向连接的方法时,SOCK_SEQPACKET 是可行的方法。

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

Unix域SOCK_DGRAM和SOCK_SEQPACKET之间的区别? 的相关文章

随机推荐

  • 为 dev_appserver 导入 python 模块的正确方法是什么?

    Intent 我正在为 App Engine 创建一个 CRUD 应用程序 其中用户通过 OAuth 进行身份验证 服务器将其访问和刷新令牌存储在数据存储区中 我正在进行本地测试dev appserver并陷入进退两难的境地 The pyt
  • 如何更改标签栏控制器项目名称的字体大小?

    我正在做一个基于 tabbarController 的应用程序 我有 3 个选项卡栏项目 我的问题是 如何更改选项卡栏项目上标题的字体样式 self tabBarItem setTitleTextAttributes NSDictionar
  • 我可以转换 Flex 框的 Flex-Grow 来生成动画吗?

    是否可以转换弹性盒中的项目 当您单击时 我希望除单击的项目之外的所有项目都折叠起来 单击的空间应使用容器中的所有可用空间 only works once item click function item not this each func
  • 如何通过node.js中的@azure/storage-blob获取blob存储中文件的安全url?

    我正在使用 azure storage blob 我可以上传文件 但如何检索它 有什么想法如何获取存储的 SAS url 我需要生成几分钟后过期的 url 并且 url 是基于令牌的 因为容器不供公共访问 请在 node js 中提供帮助或
  • 将元数据设置为 mp4

    我在以下的帮助下对视频进行编码MediaCodec and MediaMuxer 结果我有 mp4 视频文件 如何为此 mp4 文件设置元数据 创建时间 媒体元数据检索器 http developer android com intl ru
  • 如何配置@typescript-eslint规则

    我正在尝试转换为 typescript eslint但文档似乎非常缺乏 例如 我收到这样的错误 Line 58 Expected a semicolon typescript eslint member delimiter style 我想
  • 显示默认展开的 Android 通知操作按钮

    有没有办法在默认展开的通知中显示操作按钮 我使用持续通知来控制应用程序中的训练过程 我希望在通知区域中出现通知后立即显示 停止 和 暂停 等控制按钮 您无法展开通知 唯一的解决方案是 设置 优先级最大 然后将其展开到通知列表的顶部 这也取决
  • 在shinyapp中包含来自网络的图像的LaTeX PDF

    我曾经能够将来自 URL 的图像包含在由闪亮的应用程序生成的 PDF 报告中 url com 几个 markdown 版本之后我收到以下错误 Unable to load picture or PDF file https i0 wp co
  • 通过函数向 with() 传递参数

    有一种方法可以将参数从函数传递给with 就像是 dados lt data frame x 1 10 v1 rnorm 10 v2 rnorm 10 with dados v1 v2 Works func lt function data
  • 使用相同的 Symfony 2 表单进行编辑和删除(字段差异)

    目前我有一个表格 class Project extends AbstractType public function buildForm FormBuilder builder array options builder gt add n
  • 在 os x 上编译 libuv 的库?

    我正在尝试学习一些 libuv 似乎有一本很棒的书介绍了它 然而 这本书并没有解释如何实际编译它 我对从 github 中提取的代码运行 make 并按照 github 上的描述使用 GYP 进行编译 https github com jo
  • Hive - 通过聚合跨组的值来创建映射列类型

    我有一个看起来像这样的表 customer category room date 1 A aa d1 1 A bb d2 1 B cc d3 1 C aa d1 1 C bb d2 2 A aa d3 2 A bb d4 2 C bb d4
  • 按键列合并两个 data.frames

    我有两个数据框 在第一个中 我有一个 KEY ID 列和两个变量 KEY V1 V2 1 10 2 2 20 4 3 30 6 4 40 8 5 50 10 在第二个数据框中 我有一个 KEY ID 列和第三个变量 KEY V3 1 5 2
  • 以编程方式调用多部分表单方法

    我的 WebApi 有以下方法 HttpPost Route foo bar Consumes multipart form data DisableRequestSizeLimit public async Task
  • CakePHP ajax 帖子不断返回 400 Bad Request

    我正在尝试使用 ajax post 来执行操作 GET 请求工作正常 但当我尝试 POST 时 我在 firebug 中看到 400 Bad Request 并且视图返回 黑洞 响应 这是 Jquery 请求 ajax url usermg
  • 如何将 Kivy 的一个财产绑定到另一个财产?

    我想将小部件的属性绑定到子小部件的属性 因此 当根小部件属性更改时 更改也会传播到子属性 我这样尝试过 self Child MyProperty self MyProperty 这有时有效 但有时它不起作用 我无法找出它何时起作用 为什么
  • MediaPlayer.prepare() 在 Android L 上抛出 IllegalStateException

    我有从 asset 目录播放 mp3 文件的代码 MediaPlayer mediaPlayer new MediaPlayer descriptor context getAssets openFd beep mp3 mediaPlaye
  • 将字符串转换为 UTF-8

    例如 我有一个分配给编码为 ansi 的变量的字符串str 如何将其编码为 UTF 8 你的意思是当它写入文件时 像这样 Set stream CreateObject ADODB Stream stream Open stream Typ
  • Pylint 找不到 SQLAlchemy 查询成员

    我有一个使用 Flask SQLAlchemy v2 0 的 Flask v0 10 1 应用程序 我正在尝试配置 Pylint 来检查它 使用 Python 3 4 2 运行 第一个错误是 Instance of SQLAlchemy h
  • Unix域SOCK_DGRAM和SOCK_SEQPACKET之间的区别?

    根据 Unix 套接字的 Linux 手册页 UNIX 域中的有效套接字类型是 SOCK DGRAM 对于保留消息边界的面向数据报的套接字 与大多数 UNIX 实现一样 UNIX 域数据报套接字始终可靠且不可靠 不重新排序数据报 以及 自