gpt4 book ai didi

c - read在socket编程中的用法

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:22:24 25 4
gpt4 key购买 nike

在c语言编程中使用阻塞函数读取时,有什么方法可以区分不同数据包的有效载荷吗?我从 TCP 客户端发送数据包中的每条消息,当我在 TCP 服务器中读取(使用读取功能)它时,我将所有消息一起放在缓冲区中,中间没有任何分隔符。

最佳答案

您必须自己在应用层实现它。

例如,一种方法是 Type-Length-Value。

您发送的每条消息都具有以下结构:

1 byte | 2 byte | length bytes
type length value

更多详情 here .

请注意,read 不会读取指定的字节数,它可以读取更少的字节数 - 因此您需要检查它的返回值。例如参见 this .

您可能希望成为二进制协议(protocol)的一些陷阱 aware的。

还建议您阅读一些有关网络编程的背景知识,例如here - 见第 7 章。

关于c - read在socket编程中的用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41157556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com