c - 套接字读取在返回前获取所有数据

标签 c sockets message-queue

我正在编写一个维护消息队列的 tcp 代理。一旦得到服务器的响应,我需要从队列中弹出前面的消息。问题是我的服务器响应消息的大小很大,读取函数将在收集所有数据之前返回。我该如何处理这个问题?

最佳答案

在没有看到任何代码片段来了解所涉及的数据结构的情况下,听起来您只需要遍历套接字 read() 调用,直到您读取了足够的数据以满足“完整消息”的约束。收到完整消息后,您可以将其放入队列并弹出第一个消息,或者如果它是第一个则返回它。

关于c - 套接字读取在返回前获取所有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23750318/

相关文章:

linux - 消息队列 msgsnd 多行文本字段

c - 在用 C 语言构建决策树时如何存储决策树?

python - Python中的进程间通信

javascript - 如何将二进制数据从 C++ 发送到 Javascript

linux - 在 IO-Socket-IP/t/04local_client_v6.t 上安装 perl 5.20.3 失败

architecture - Apache Kafka 适合用作无序任务队列吗?

c - 使用 setpgid() 对子进程进行分组

c - 在屏幕和文本文件上打印

c - 每次调整窗口大小时内存都会增加

web-services - Azure Web App 响应时间较长