0

我的问题是我可以收到带有以下代码的半条消息吗?如果我想发送类似“MESSAGE\n”的消息,如果频道速度很慢,我只能收到 M 字符吗?

和代码部分:

fd.fd = c->socket;
fd.events = POLLIN;
bzero(received, sizeof(received));

result = poll(&fd, 1, time);
if(result > 0)
{
  i = SSL_read ( (SSL *)c->sslHandle, (char*)received, INCOMING_BUFFERSIZE);
  result = SSL_get_error(c->sslHandle, i);
   ...
}

因为我虽然在没有收到“\n”符号之前我什么也没收到。

如何确保我只接受带有 \n 的消息。

感谢帮助,

塔马斯

编辑:我使用的版本是 1.0.1c

4

1 回答 1

0

套接字是基于流的,这意味着您获得的是字节流,而不是消息。因此,通过一次 recv() 调用,您可以获得从 1 到您已发送数据的所有字节。您需要将数据放入某个中间缓冲区并分析缓冲区中的某些标记(在您的情况下为 \n)。

于 2013-05-28T15:10:38.637 回答