可以在 Tcp 连接中分离某些数据吗?

2024-03-10

我的问题很简单。可以在 TCP 连接中分离某些数据(如标题所示)吗?例如,如果我打电话MySocket.Send(Encoding.UTF8.GetBytes("this is a test!");,我可以从连接的另一端获得 2 个单独的接收操作,例如“这是”和“测试”吗?即多少reliable是TCP吗?


TCP通常被用作stream;没有保证任何使得“发送”和“接收”操作一对一匹配。必须读取 15 次,每次获取 1 个字节,这在技术上是有效的(但不太可能)。因此,通常有两种操作模式:

  • 读取直到流结束(发送者在发送消息后关闭其出站套接字)
  • add some kind of framing protocol
    • 对于基于文本的协议,这通常是一个哨兵值,例如0或行尾(无论是 CR、LF、CRLF 还是 LFCR 由您决定!)
    • 对于二进制协议,这通常是某种明确定义格式的长度前缀,告诉您下一条消息要考虑多少字节

(但是这条线很模糊;例如,redis 协议大致基于文本,但使用以下形式的纯文本长度前缀${n}\r\n{data}\r\n, where {n}是表示为 ASCII 字符串的字节数,并且{data}是原始的n bytes)

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

可以在 Tcp 连接中分离某些数据吗? 的相关文章

随机推荐

  • 当我关闭选项卡时 JS ServiceWorker 会发生什么

    当您关闭所有执行 Web Worker 的选项卡时 Worker 将关闭 同样的事情也会发生在 Service Worker 身上吗 与此相关的有两个方面 服务人员登记 这是浏览器中保存的记录 表示 对于此 URL 这些事件应由此脚本处理
  • PHP 从 SimpleXMLElement 数组获取值

    我有这个 1 gt object SimpleXMLElement 6 1 attributes gt array 14 name gt string 5 MySQL acknowledged gt string 1 1 comments
  • 如何在一个图中制作超过10个子图?

    我正在尝试制作 5x4 的子图网格 通过查看示例 在我看来最好的方法是 import matplotlib pyplot as plt plt figure plt subplot 221 其中子图 22 中的前两个数字表示它是一个 2x2
  • SLF4J + Logback 无法登录 WildFly

    我在 WildFly 8 中运行 Web 应用程序 但由于某种原因它没有记录 我使用 SLF4J 和 LOGBACK 日志文件是在部署时创建的 但它是空的 我也没有在 Wildfly 日志中看到我的日志语句 该类包含 package com
  • 如何使用 JodaTime 获取特定月份的最后一个日期?

    我需要第一次约会 如org joda time LocalDate 一个月和最后一个月 获得第一个是微不足道的 但获得最后一个似乎需要一些逻辑 因为月份的长度不同 二月的长度甚至多年来都不同 JodaTime 中是否已经内置了这种机制 或者
  • Synchronized 是否像 Lock.lock() 那样驻留并发线程?

    当我们打电话时lock lock 或尝试输入synchronized如果其他线程已经获取了该锁 那么我们的线程就会阻塞 现在我的问题是 当我们查看实施时lock lock 它将获取锁委托给 AQS AQS 实际上会停放当前线程 以便调度程序
  • 如何在 QML 中重用代码

    我有这段 QML 代码 Column spacing units gu 2 anchors fill parent centerIn parent Row spacing units gu 4 Row spacing units gu 4
  • 如何将变量从一个脚本传递到另一个脚本

    这是一个我无法正常工作的脚本 它的目的是检查一个复选框是否被选中 然后调用第二个 响应的例程 取决于我最初调用脚本时显示的 selectedindex sindex
  • C# 将字符串转换为 ASCII 字节

    我有一个字符串 LogoDataStr ABC0000 我想转换为 ASCII 字节 结果应该是 LogoDataBy 0 0x41 LogoDataBy 1 0x42 LogoDataBy 2 0x43 LogoDataBy 3 0x30
  • 不推荐使用delayWhen RxJs

    I got a Deprecated symbol used 我的 IDE 中出现使用警告delayWhen在我的应用程序中 My code private nextImg Observable
  • 从文件或标准输入读取

    我正在编写一个实用程序 它接受文件名或从标准输入读取 我想知道检查标准输入是否存在 数据正在通过管道传输到程序 以及如果存在则读取该数据的最强大 最快的方法 如果不存在 则处理将在文件名上进行给予 我尝试使用以下测试来确定大小stdin但我
  • OpenCV 数据矩阵代码查找器

    有人写过或听说过用 OpenCV 编写的数据矩阵代码解码器吗 我用的是自带的解码器ZXing http code google com p zxing 不过说实话 还挺糟糕的 它需要是一个完全清晰的图像 使用整个图像 并且不成一个角度 后者
  • 设置详细的正则表达式

    在尝试设置详细的正则表达式时 set up variables ankerwords beerdigt bestattet begraben beigesetzt combine the words five words before af
  • 是否可以让 Windows Azure 模拟器将浏览器打开到 127.0.0.1 以外的 URL

    简单的问题 但背后有很多意义 讨论 是否可以让 Windows Azure 模拟器将浏览器打开到 127 0 0 1 和端口 81 之外的 URL 按照步骤将 127 0 0 1 更改为所需 IP 计算模拟器设置 转到 Program Fi
  • 如何从 Ruby 字符串中删除特定字符?

    我有几个看起来像这样的字符串 String1 它们的长度都不同 如何在循环中删除所有这些字符串中的括号 使用如下操作String tr http ruby doc org core 2 0 0 String html method i tr
  • Scala:伴生对象与案例类的定义顺序

    在 Scala 2 9 1 中 我得到以下行为 class Foo case class X object X this compiles def bar object Y this compiles case class Y case c
  • python:几何布朗运动模拟[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions GBM 的
  • 在 Snowflake 中逆透视多个列

    I have a table that looks as follows I need to unpivot the Rating and the Comments as follows 在 Snowflake 中执行此操作的最佳方法是什么
  • 嵌套首选项屏幕因 Android 中的屏幕方向更改而关闭

    我最近偶然发现一个问题 我正在使用这样的嵌套 PreferenceScreen
  • 可以在 Tcp 连接中分离某些数据吗?

    我的问题很简单 可以在 TCP 连接中分离某些数据 如标题所示 吗 例如 如果我打电话MySocket Send Encoding UTF8 GetBytes this is a test 我可以从连接的另一端获得 2 个单独的接收操作 例