为什么recv()与MSG_PEEK阻塞?

时间:2012-11-01 00:53:55

标签: c network-programming

只有一次,当创建新连接时,我想查看流以确定连接是否是SSL连接。为此,我使用带有MSG_PEEK标志的recv()。问题是,对于不是SSL连接且没有任何初始传入数据的连接,recv会阻塞几秒钟。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:5)

如果您不希望调用阻止,您也可以提供MSG_DONTWAIT标志(不是POSIX,而是广泛实现) - 但是如何区分初始数据的SSL连接?还没有到达和非SSL连接?

为了可靠地执行此操作,您无需等待第一部分数据到达。