我一直在使用基于 Indy TIdHTTP 组件的跨平台 Websocket 客户端,发现 here .
客户端,TIdHTTPWebSocketClient,内部使用TIdWebSocketMultiReadThread;后者通过使用 Indy 的 GStack IOControl 访问 ioctl 创建一个非阻塞套接字(InitSpecialEventSocket 方法)。
从github下载的代码,适用于Windows,但在Android上失败; FIONBIO不得不改为$5421 .
我目前无法在 iOS 上进行测试,我想知道其他人是否已经设法让 TIdHTTPWebSocketClient 在此平台上工作,以及应该使用 FIONBIO 的什么值。
提前致谢。
最佳答案
FIONBIO
适用于 ioctlsocket()
在 Windows 和 ioctl()
在 POSIX 上。
在 POSIX 上,您可以选择指定 SOCK_NONBLOCK
创建套接字时标记,或设置 O_NONBLOCK
使用 fcntl(F_SETFL)
在套接字上标记.
请注意 Indy 确实有一个 AOverlapped
TIdStack.NewSocketHandle()
上的(非阻塞)参数和 TIdStackBSDBase.WSSocket()
方法,以及 TIdStackBSDBase.SetBlocking()
方法,但它们目前尚未针对非 Windows 平台实现(已为它们编写代码,但尚未 checkin )。
关于ios - iOS 的 FIONBIO 值是多少,以阻止/取消阻止套接字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58599892/