我的问题是,我可以使用下面的代码收到一条消息吗? 如果我想发送如下消息:“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
答案 0 :(得分:0)
套接字是基于流的,这意味着您获得的是字节流,而不是消息。因此,通过一次recv()调用,您可以从1发送到您发送的数据的所有字节。您需要将数据放入某个中间缓冲区并分析缓冲区中的某些标记(在您的情况下为\ n)。