通过c中的ssl通道接收一半消息

时间:2013-05-28 14:51:29

标签: c linux ssl tcp communication

我的问题是,我可以使用下面的代码收到一条消息吗? 如果我想发送如下消息:“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结束时接受消息。

感谢帮助,

的Tamas

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

1 个答案:

答案 0 :(得分:0)

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

相关问题