【发布时间】:2014-05-20 12:39:47
【问题描述】:
我正在编写一个 tcp 代理,它维护一个消息队列。一旦得到服务器的响应,我需要从队列中弹出前面的消息。问题是我的服务器响应消息的大小很大,读取函数将在所有数据收集之前返回。我该如何处理这个问题?
【问题讨论】:
-
几个想法是 1) 在数据本身之前传递数据的大小并读取直到读取了那么多字节,或者 2) 在末尾有一些标记消息结束的东西它。
-
为什么要排队?代理服务器没有队列。在大多数情况下,它们只是读取和写入字节。
-
这个问题有必要处理吗?如果您只发送()接收到的字节,会出现什么问题?
-
@itsme86 消息长度不固定且未知,我认为最好循环直到不再像其他人所说的那样有消息出现
-
@EJP 是的,我不能,因为我的每条消息都是一个实体,而且我有多个客户端,这就是为什么我需要一个消息队列:P
标签: c sockets message-queue