是否有一个易于实现或现有的协议来在 Windows 中通过管道/套接字传递对象?

发布于 2024-09-15 23:29:30 字数 281 浏览 7 评论 0原文

该对象本质上是动态长度的BYTE

实现发送/接收机制的最简单方法是什么?

我得到了以下提示,但不知道如何自己实施此协议:

只要记住管道,就像 套接字,不保证 你放入管道中的所有东西都会 同样从另一端出来 存在写入时的读取次数。 当您从管道或套接字读取数据时 你得到的是目前的情况 在缓冲区中可用,但可能不可用 但一切都是这样写的 你必须继续阅读,直到你明白 预期的数据量。

The object is essentially BYTEs of dynamic length.

What's the easiest way to implement a send/receive mechanism?

I got a tip follows but have no idea how to roll this protocol myself:

Just remember that pipes, like
sockets, don't guarantee that
everything you put in the pipe will
come out the other end in the same
number of reads as there were writes.
When you read from the pipe or socket
you are given what is currently
available in the buffer which may not
yet be everything that was written so
you have to keep reading until you get
the expected amount of data.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

绝情姑娘 2024-09-22 23:29:30

这该有多脏啊?

最简单的情况:

  • 将字节计数添加到发送的数据中,
  • 继续读取,直到达到字节计数

How dirt cheep must this be?

Simplest case:

  • prepend byte count to data sent
  • keep reading until byte count reached
温馨耳语 2024-09-22 23:29:30

接收端如何区分字节数和实际字节数据?

有两种方法。

第一个是位置的:如果第一个字节的长度为“n”,接下来的n字节是数据,那么之后的字节是下一个数据包的开始,因此是下一个数据包的初始长度字节。

第二种方法是使用一些转义字符来标记每条消息的开始或结束。

How to distinguish between byte count and the actual byte data at the receiving side?

There are two ways.

The first is positional: if the first byte is the length 'n', and the next n bytes are data, then the byte after that is the start of the next packet, and is therefore the initial length byte of the next packet.

The second way is to use some escape character, to mark the start or end of each message.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文