iOS 到 Block/Unblock 套接字的 FIONBIO 值是多少?

What is FIONBIO value for iOS, to Block/Unblock Sockets?

我一直在使用基于 Indy TIdHTTP 组件的跨平台 Websocket 客户端,发现 here

客户端TIdHTTPWebSocketClient,内部使用TIdWebSocketMultiReadThread;后者通过使用 Indy 的 GStack IOControl 访问 ioctl 创建一个非阻塞套接字(InitSpecialEventSocket 方法)。

从 github 下载的代码适用于 Windows,但在 Android 上失败; FIONBIO不得不改为21.

我目前无法在 iOS 上进行测试,想知道其他人是否已经设法让 TIdHTTPWebSocketClient 在这个平台上工作,以及应该使用什么值的 FIONBIO。

提前致谢。

FIONBIO 适用于 Windows 上的 ioctlsocket() 和 POSIX 上的 ioctl()

在 POSIX 上,您可以选择在创建套接字时指定 SOCK_NONBLOCK 标志,或者使用 fcntl(F_SETFL).[=20 在套接字上设置 O_NONBLOCK 标志=]

请注意,Indy 在 TIdStack.NewSocketHandle()TIdStackBSDBase.WSSocket() 方法以及 TIdStackBSDBase.SetBlocking() 方法上确实有一个 AOverlapped(非阻塞)参数,但它们不是目前为非 Windows 平台实现(已为它们编写代码,但尚未签入)。