从c 中的套接字返回值读取

Read from socket return value in c++

本文关键字:返回值 读取 套接字      更新时间:2023-10-16

我需要从插座上强制read的返回值,从而等于零,而无需关闭连接。

我在页面中阅读了以下语句,说:

如果收到文件终止条件或连接关闭,则返回0。

,但我不知道如何在我发送的字符串后获得该条件。

任何人可以帮忙吗?

我恐怕你不能那样做。

如果您希望read返回零,则需要关闭套接字。如果您不想关闭插座,则需要作为协议的一部分发出信号"通信"或"通知"。

一种常见的方法是将每个消息的长度前缀。这样,接收方知道何时读取完整的消息并对它做任何事情。

如果要返回零,则必须关闭套接字或将其关闭以输出。无论哪种情况,您之后都无法发送其他任何内容。如果该约束不适合您,则必须修改您的要求,因为这是没有意义的。

"文件条件的结尾"answers"连接封闭"条件都告诉接收者,该插座上不再收到更多数据。您无法通过发送一些魔术数据来模拟这一点。

除了在套接字上调用close外,您还可以使用套接字上的shutdown(2)仅关闭阅读侧或写作侧。这可能在有限的情况下有助于,但在一般情况下没有帮助。

也许您需要一些多路复用syscall,例如poll(2)。

您绝对需要阅读一些好的材料,例如高级Linux编程或高级UNIX编程。

如果您需要TCP/IP传输来传输应用程序消息,则需要明确地关心包装和分裂(通过具有固定大小的消息,或者通过某种方法来了解传输过程中的逻辑消息大小)。请注意,TCP/IP传输可能会被网络分散。