c - 为什么带有 MSG_PEEK 的 recv() 会阻塞?

标签 c network-programming

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

最佳答案

如果您不想阻止调用,您也可以提供 MSG_DONTWAIT 标志(不是 POSIX,但已广泛实现)——但是您如何区分 SSL 连接初始数据尚未到达并且是非 SSL 连接?

似乎要可靠地执行此操作,您无论如何都需要等待数据的第一部分到达。

关于c - 为什么带有 MSG_PEEK 的 recv() 会阻塞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13169534/

相关文章:

C 与 Ubuntu 上的 Eclipse : why is an . exe 并且没有创建 linux 可执行文件?

c - 安卓NDK : Issues with variable

c - (C) 如何将 strncat() 与 **argv 一起使用?

c - 哪个代码执行速度更快?

c - 仅左移数字的一部分

linux - 零拷贝机制和 libpcap

linux - 什么是接口(interface)标识符

c - 浮点缓冲区转换为 unsigned char* 在套接字发送时丢失数据

java - 实时应用程序(服务器/客户端)的设计(类、方法、接口(interface))

java - 如何在java中发送完整的(.txt,.doc)文件