gpt4 book ai didi

c - 从服务器获取数据时知道要接收多少

转载 作者:太空宇宙 更新时间:2023-11-04 02:28:37 24 4
gpt4 key购买 nike

我正在学习 C 的套接字编程,我已经让服务器和客户端毫无问题地交谈和发送消息,但我需要一种方法让客户端知道它应该接收多少字节。部分任务是制作一个 header ,其中包括一个校验和,它应该是 number_of_bytes_sent % 32 的二进制形式。我已经让服务器制作和发送 header 很好,但我有点困惑如何我可以从该信息中获取应该接收的字节数。

最佳答案

您需要在两侧(发射和接收)进行缓冲。您需要拥有并遵循一些关于如何组织请求和回复的约定。在应用程序级别,您的协议(protocol)应该知道回复或请求(更普遍的是任何应用程序消息)从哪里开始和结束。学习实例HTTPSMTP .

请记住,TCP 套接字只是字节流没有消息边界

因此,客户端可能会成功发送 一个 1 KB 片段的单个消息,而服务器可以接收 两个 512 byte slice 段。反过来也可能发生。碎片是随机的,因此不可重现。

路由器 - 特别是 Wifi 路由器 - 可以(并且确实)对 TCP/IP 数据包进行分段(甚至有时通过连接它们来进行碎片整理)。

类似 0mq 的库可以帮助(他们是 free software ,所以你可以而且可能应该研究他们的源代码)。另请查看 HTTP 库(libcurl 在客户端,libonion 在服务器端)。

如果您自己实现了一些套接字,请阅读 poll(2)socket(7) (以及 tcp(7)unix(7) )。

I'm a bit stumped as to how I can get the number of bytes I'm supposed to receive

可能会要求您定义应用程序协议(protocol)。然后您可以将消息(或内容)长度放入您的应用程序 header 中。 HTTP headers 中的 Content-length: 属性可能是鼓舞人心的。

关于c - 从服务器获取数据时知道要接收多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47219913/

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