是否有一个易于实现或现有的协议来在 Windows 中通过管道/套接字传递对象?
该对象本质上是动态长度的BYTE
。
实现发送/接收机制的最简单方法是什么?
我得到了以下提示,但不知道如何自己实施此协议:
只要记住管道,就像 套接字,不保证 你放入管道中的所有东西都会 同样从另一端出来 存在写入时的读取次数。 当您从管道或套接字读取数据时 你得到的是目前的情况 在缓冲区中可用,但可能不可用 但一切都是这样写的 你必须继续阅读,直到你明白 预期的数据量。
The object is essentially BYTE
s 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这该有多脏啊?
最简单的情况:
How dirt cheep must this be?
Simplest case:
有两种方法。
第一个是位置的:如果第一个字节的长度为“n”,接下来的n字节是数据,那么之后的字节是下一个数据包的开始,因此是下一个数据包的初始长度字节。
第二种方法是使用一些转义字符来标记每条消息的开始或结束。
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.