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 平台实现(已为它们编写代码,但尚未签入)。
我一直在使用基于 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 平台实现(已为它们编写代码,但尚未签入)。